| " Vim syntax file |
| " Language: C++ |
| " Current Maintainer: vim-jp (https://github.com/vim-jp/cpp-vim) |
| " Previous Maintainer: Ken Shan <ccshan@post.harvard.edu> |
| " Last Change: 2014 May 14 |
| |
| " For version 5.x: Clear all syntax items |
| " For version 6.x: Quit when a syntax file was already loaded |
| if version < 600 |
| syntax clear |
| elseif exists("b:current_syntax") |
| finish |
| endif |
| |
| " Read the C syntax to start with |
| if version < 600 |
| so <sfile>:p:h/c.vim |
| else |
| runtime! syntax/c.vim |
| unlet b:current_syntax |
| endif |
| |
| " C++ extensions |
| syn keyword cppStatement new delete this friend using |
| syn keyword cppAccess public protected private |
| syn keyword cppType inline virtual explicit export bool wchar_t |
| syn keyword cppExceptions throw try catch |
| syn keyword cppOperator operator typeid |
| syn keyword cppOperator and bitor or xor compl bitand and_eq or_eq xor_eq not not_eq |
| syn match cppCast "\<\(const\|static\|dynamic\|reinterpret\)_cast\s*<"me=e-1 |
| syn match cppCast "\<\(const\|static\|dynamic\|reinterpret\)_cast\s*$" |
| syn keyword cppStorageClass mutable |
| syn keyword cppStructure class typename template namespace |
| syn keyword cppBoolean true false |
| |
| " C++ 11 extensions |
| if !exists("cpp_no_cpp11") |
| syn keyword cppType override final |
| syn keyword cppExceptions noexcept |
| syn keyword cppStorageClass constexpr decltype |
| syn keyword cppConstant nullptr |
| syn region cppRawString matchgroup=cppRawDelimiter start=+\%(u8\|[uLU]\)\=R"\z([[:alnum:]_{}[\]#<>%:;.?*\+\-/\^&|~!=,"']\{,16}\)(+ end=+)\z1"+ contains=@Spell |
| endif |
| |
| " The minimum and maximum operators in GNU C++ |
| syn match cppMinMax "[<>]?" |
| |
| " Default highlighting |
| if version >= 508 || !exists("did_cpp_syntax_inits") |
| if version < 508 |
| let did_cpp_syntax_inits = 1 |
| command -nargs=+ HiLink hi link <args> |
| else |
| command -nargs=+ HiLink hi def link <args> |
| endif |
| HiLink cppAccess cppStatement |
| HiLink cppCast cppStatement |
| HiLink cppExceptions Exception |
| HiLink cppOperator Operator |
| HiLink cppStatement Statement |
| HiLink cppType Type |
| HiLink cppStorageClass StorageClass |
| HiLink cppStructure Structure |
| HiLink cppBoolean Boolean |
| HiLink cppConstant Constant |
| HiLink cppRawDelimiter Delimiter |
| HiLink cppRawString String |
| delcommand HiLink |
| endif |
| |
| let b:current_syntax = "cpp" |
| |
| " vim: ts=8 |