-
Notifications
You must be signed in to change notification settings - Fork 44
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
41 additions
and
29 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,7 @@ | ||
" Vim syntax file | ||
" Language: C | ||
" Maintainer: Bram Moolenaar <[email protected]> | ||
" Last Change: 2013 Jul 05 | ||
" Last Change: 2015 Mar 1 | ||
|
||
" Quit when a (custom) syntax file was already loaded | ||
if exists("b:current_syntax") | ||
|
@@ -35,28 +35,37 @@ syn match cSpecial display contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)" | |
if !exists("c_no_utf") | ||
syn match cSpecial display contained "\\\(u\x\{4}\|U\x\{8}\)" | ||
endif | ||
if exists("c_no_cformat") | ||
syn region cString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,@Spell extend | ||
" cCppString: same as cString, but ends at end of line | ||
if !exists("cpp_no_cpp11") " ISO C++11 | ||
syn region cCppString start=+\(L\|u\|u8\|U\|R\|LR\|u8R\|uR\|UR\)\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=cSpecial,cFormat,@Spell | ||
else | ||
syn region cCppString start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=cSpecial,cFormat,@Spell | ||
endif | ||
syn region cCppOut2 contained start="0" end="^\s*\(%:\|#\)\s*\(endif\>\|else\>\|elif\>\)" contains=cSpaceError,cCppSkip | ||
syn region cCppSkip contained start="^\s*\(%:\|#\)\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\(%:\|#\)\s*endif\>" contains=cSpaceError,cCppSkip | ||
else | ||
|
||
if !exists("c_no_cformat") | ||
" Highlight % items in strings. | ||
if !exists("c_no_c99") " ISO C99 | ||
syn match cFormat display "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlLjzt]\|ll\|hh\)\=\([aAbdiuoxXDOUfFeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained | ||
else | ||
syn match cFormat display "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlL]\|ll\)\=\([bdiuoxXDOUfeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained | ||
endif | ||
syn match cFormat display "%%" contained | ||
endif | ||
|
||
" cCppString: same as cString, but ends at end of line | ||
if s:ft ==# "cpp" && !exists("cpp_no_cpp11") && !exists("c_no_cformat") | ||
" ISO C++11 | ||
syn region cString start=+\(L\|u\|u8\|U\|R\|LR\|u8R\|uR\|UR\)\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat,@Spell extend | ||
syn region cCppString start=+\(L\|u\|u8\|U\|R\|LR\|u8R\|uR\|UR\)\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=cSpecial,cFormat,@Spell | ||
elseif s:ft ==# "c" && !exists("c_no_c11") && !exists("c_no_cformat") | ||
" ISO C99 | ||
syn region cString start=+\%(L\|U\|u8\)\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat,@Spell extend | ||
syn region cCppString start=+\%(L\|U\|u8\)\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=cSpecial,cFormat,@Spell | ||
else | ||
" older C or C++ | ||
syn match cFormat display "%%" contained | ||
syn region cString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat,@Spell extend | ||
" cCppString: same as cString, but ends at end of line | ||
syn region cCppString start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=cSpecial,cFormat,@Spell | ||
endif | ||
|
||
syn region cCppSkip contained start="^\s*\(%:\|#\)\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\(%:\|#\)\s*endif\>" contains=cSpaceError,cCppSkip | ||
|
||
syn cluster cStringGroup contains=cCppString,cCppSkip | ||
|
||
syn match cCharacter "L\='[^\\]'" | ||
syn match cCharacter "L'[^']*'" contains=cSpecial | ||
if exists("c_gnu") | ||
|
@@ -70,7 +79,8 @@ syn match cSpecialCharacter display "L\='\\\o\{1,3}'" | |
syn match cSpecialCharacter display "'\\x\x\{1,2}'" | ||
syn match cSpecialCharacter display "L'\\x\x\+'" | ||
|
||
if !exists("c_no_c11") " ISO C11 | ||
if (s:ft ==# "c" && !exists("c_no_c11")) || (s:ft ==# "cpp" && !exists("cpp_no_cpp11")) | ||
" ISO C11 or ISO C++ 11 | ||
if exists("c_no_cformat") | ||
syn region cString start=+\%(U\|u8\=\)"+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,@Spell extend | ||
else | ||
|
@@ -102,58 +112,58 @@ endif | |
" This should be before cErrInParen to avoid problems with #define ({ xxx }) | ||
if exists("c_curly_error") | ||
syn match cCurlyError "}" | ||
syn region cBlock start="{" end="}" contains=ALLBUT,cBadBlock,cCurlyError,@cParenGroup,cErrInParen,cCppParen,cErrInBracket,cCppBracket,cCppString,@Spell fold | ||
syn region cBlock start="{" end="}" contains=ALLBUT,cBadBlock,cCurlyError,@cParenGroup,cErrInParen,cCppParen,cErrInBracket,cCppBracket,@cStringGroup,@Spell fold | ||
else | ||
syn region cBlock start="{" end="}" transparent fold | ||
endif | ||
|
||
"catch errors caused by wrong parenthesis and brackets | ||
" also accept <% for {, %> for }, <: for [ and :> for ] (C99) | ||
" Catch errors caused by wrong parenthesis and brackets. | ||
" Also accept <% for {, %> for }, <: for [ and :> for ] (C99) | ||
" But avoid matching <::. | ||
syn cluster cParenGroup contains=cParenError,cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserLabel,cBitField,cOctalZero,@cCppOutInGroup,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom | ||
if exists("c_no_curly_error") | ||
if s:ft ==# 'cpp' && !exists("cpp_no_cpp11") | ||
syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cCppString,@Spell | ||
syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,@cStringGroup,@Spell | ||
" cCppParen: same as cParen but ends at end-of-line; used in cDefine | ||
syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell | ||
syn match cParenError display ")" | ||
syn match cErrInParen display contained "^^<%\|^%>" | ||
else | ||
syn region cParen transparent start='(' end=')' end='}'me=s-1 contains=ALLBUT,cBlock,@cParenGroup,cCppParen,cCppString,@Spell | ||
syn region cParen transparent start='(' end=')' end='}'me=s-1 contains=ALLBUT,cBlock,@cParenGroup,cCppParen,@cStringGroup,@Spell | ||
" cCppParen: same as cParen but ends at end-of-line; used in cDefine | ||
syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell | ||
syn match cParenError display ")" | ||
syn match cErrInParen display contained "^[{}]\|^<%\|^%>" | ||
endif | ||
elseif exists("c_no_bracket_error") | ||
if s:ft ==# 'cpp' && !exists("cpp_no_cpp11") | ||
syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cCppString,@Spell | ||
syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,@cStringGroup,@Spell | ||
" cCppParen: same as cParen but ends at end-of-line; used in cDefine | ||
syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell | ||
syn match cParenError display ")" | ||
syn match cErrInParen display contained "<%\|%>" | ||
else | ||
syn region cParen transparent start='(' end=')' end='}'me=s-1 contains=ALLBUT,cBlock,@cParenGroup,cCppParen,cCppString,@Spell | ||
syn region cParen transparent start='(' end=')' end='}'me=s-1 contains=ALLBUT,cBlock,@cParenGroup,cCppParen,@cStringGroup,@Spell | ||
" cCppParen: same as cParen but ends at end-of-line; used in cDefine | ||
syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell | ||
syn match cParenError display ")" | ||
syn match cErrInParen display contained "[{}]\|<%\|%>" | ||
endif | ||
else | ||
if s:ft ==# 'cpp' && !exists("cpp_no_cpp11") | ||
syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cErrInBracket,cCppBracket,cCppString,@Spell | ||
syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cErrInBracket,cCppBracket,@cStringGroup,@Spell | ||
" cCppParen: same as cParen but ends at end-of-line; used in cDefine | ||
syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cErrInBracket,cParen,cBracket,cString,@Spell | ||
syn match cParenError display "[\])]" | ||
syn match cErrInParen display contained "<%\|%>" | ||
syn region cBracket transparent start='\[\|<::\@!' end=']\|:>' contains=ALLBUT,@cParenGroup,cErrInParen,cCppParen,cCppBracket,cCppString,@Spell | ||
syn region cBracket transparent start='\[\|<::\@!' end=']\|:>' contains=ALLBUT,@cParenGroup,cErrInParen,cCppParen,cCppBracket,@cStringGroup,@Spell | ||
else | ||
syn region cParen transparent start='(' end=')' end='}'me=s-1 contains=ALLBUT,cBlock,@cParenGroup,cCppParen,cErrInBracket,cCppBracket,cCppString,@Spell | ||
syn region cParen transparent start='(' end=')' end='}'me=s-1 contains=ALLBUT,cBlock,@cParenGroup,cCppParen,cErrInBracket,cCppBracket,@cStringGroup,@Spell | ||
" cCppParen: same as cParen but ends at end-of-line; used in cDefine | ||
syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cErrInBracket,cParen,cBracket,cString,@Spell | ||
syn match cParenError display "[\])]" | ||
syn match cErrInParen display contained "[\]{}]\|<%\|%>" | ||
syn region cBracket transparent start='\[\|<::\@!' end=']\|:>' end='}'me=s-1 contains=ALLBUT,cBlock,@cParenGroup,cErrInParen,cCppParen,cCppBracket,cCppString,@Spell | ||
syn region cBracket transparent start='\[\|<::\@!' end=']\|:>' end='}'me=s-1 contains=ALLBUT,cBlock,@cParenGroup,cErrInParen,cCppParen,cCppBracket,@cStringGroup,@Spell | ||
endif | ||
" cCppBracket: same as cParen but ends at end-of-line; used in cDefine | ||
syn region cCppBracket transparent start='\[\|<::\@!' skip='\\$' excludenl end=']\|:>' end='$' contained contains=ALLBUT,@cParenGroup,cErrInParen,cParen,cBracket,cString,@Spell | ||
|
@@ -322,6 +332,9 @@ if !exists("c_no_ansi") || exists("c_ansi_constants") || exists("c_gnu") | |
syn keyword cConstant SEEK_CUR SEEK_END SEEK_SET | ||
syn keyword cConstant TMP_MAX stderr stdin stdout | ||
syn keyword cConstant EXIT_FAILURE EXIT_SUCCESS RAND_MAX | ||
" POSIX 2001 | ||
syn keyword cConstant SIGBUS SIGPOLL SIGPROF SIGSYS SIGURG | ||
syn keyword cConstant SIGVTALRM SIGXCPU SIGXFSZ | ||
" Add POSIX errors as well | ||
syn keyword cConstant E2BIG EACCES EAGAIN EBADF EBADMSG EBUSY | ||
syn keyword cConstant ECANCELED ECHILD EDEADLK EDOM EEXIST EFAULT | ||
|
@@ -373,7 +386,7 @@ syn region cPreProc start="^\s*\(%:\|#\)\s*\(pragma\>\|line\>\|warning\>\|warn\> | |
" Highlight User Labels | ||
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 | ||
if s:ft ==# 'c' || exists("cpp_no_cpp11") | ||
syn region cMulti transparent start='?' skip='::' end=':' contains=ALLBUT,@cMultiGroup,@Spell | ||
syn region cMulti transparent start='?' skip='::' end=':' contains=ALLBUT,@cMultiGroup,@Spell,@cStringGroup | ||
endif | ||
" Avoid matching foo::bar() in C++ by requiring that the next char is not ':' | ||
syn cluster cLabelGroup contains=cUserLabel | ||
|
@@ -458,8 +471,7 @@ hi def link cTodo Todo | |
hi def link cBadContinuation Error | ||
hi def link cCppOutSkip cCppOutIf2 | ||
hi def link cCppInElse2 cCppOutIf2 | ||
hi def link cCppOutIf2 cCppOut2 " Old syntax group for #if 0 body | ||
hi def link cCppOut2 cCppOut " Old syntax group for #if of #if 0 | ||
hi def link cCppOutIf2 cCppOut | ||
hi def link cCppOut Comment | ||
|
||
let b:current_syntax = "c" | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,7 +2,7 @@ | |
" Language: C++ | ||
" Current Maintainer: vim-jp (https://github.com/vim-jp/vim-cpp) | ||
" Previous Maintainer: Ken Shan <[email protected]> | ||
" Last Change: 2014 May 13 | ||
" Last Change: 2015 Mar 1 | ||
|
||
" For version 5.x: Clear all syntax items | ||
" For version 6.x: Quit when a syntax file was already loaded | ||
|