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
 |