38 lines
1.6 KiB
VimL
38 lines
1.6 KiB
VimL
" Language: C++
|
|
" Description: Additional C++ syntax file.
|
|
" Author: Kenneth Benzie (Benie) k.benzie83@gmail.com
|
|
" Last Modified: September 04, 2016
|
|
|
|
" Match delimiter expressions: <expr>, ex::pr
|
|
" ^ ^ ^^
|
|
syn match cppDelimiter '\(<\|>\|::\)'
|
|
" Match keyword logic operators
|
|
syn keyword cppOperator and and_eq bitand bitor compl not not_eq or or_eq xor xor_eq
|
|
" Match keyword operators
|
|
syn keyword cppOperator new delete alignas alignof decltype
|
|
" Match single character operators if they are surrounded by white space: / < >
|
|
" ^ ^ ^
|
|
syn match cppOperator '\(\s\zs\/\s\ze\|\s\zs<\s\ze\|\s\zs>\s\ze\)'
|
|
" Match nested namespace expressions: expr::
|
|
" ^^^^
|
|
syn match cppNestedNameSpecifier '\w[A-Za-z0-9_]*\ze::'
|
|
" Match multi character operators, override cppDelimiter matches for < >
|
|
" ^ ^
|
|
syn match cppOperator '\(<<\ze\s\|\s\zs>>\|>>=\|<<=\|<=\|>=\|->\*\|->\)'
|
|
" Match = delete; as a statement
|
|
" ^^^^^^
|
|
" TODO: For some reason \zs stop this from matching, so the cppEquals hack was
|
|
" added to work around the failure to highlight in that case. This is terrible
|
|
" and a fix needs to be found.
|
|
syn match cppEquals '='
|
|
syn match cppStatement '=\s\+delete\ze\s*;' contains=cppEquals
|
|
hi default link cppEquals cppOperator
|
|
|
|
" Define additional highlight groups
|
|
hi default link cppDelimiter Delimiter
|
|
|
|
" Override default highlight groups
|
|
hi link cppCast Operator
|
|
hi link cppModifier Statement
|
|
hi link cppNestedNameSpecifier Include
|