├── README.md ├── indent └── cs.vim └── syntax └── cs.vim /README.md: -------------------------------------------------------------------------------- 1 | This plugin provides faster, more accurate syntax highlighting for C# and is intended to act as a drop-in replacement for Vim's built-in C# highlighting. It _should_ support all C# features up to C# 12. 2 | -------------------------------------------------------------------------------- /indent/cs.vim: -------------------------------------------------------------------------------- 1 | " Vim indent file 2 | " Language: C# 3 | " Author: Jeffrey Crochet 4 | " URL: https://github.com/jlcrochet/vim-cs 5 | 6 | if get(b:, 'did_indent') 7 | finish 8 | endif 9 | 10 | let b:did_indent = 1 11 | 12 | setlocal 13 | \ indentexpr=GetCsIndent() 14 | \ cinoptions+=j1 15 | 16 | if exists('*GetCsIndent') 17 | finish 18 | endif 19 | 20 | let s:skip_delimiter = "synID(line('.'), col('.'), 0)->synIDattr('name') !=? 'csDelimiter'" 21 | 22 | function s:syn_name_at(lnum, col) 23 | return synID(a:lnum, a:col, 0)->synIDattr('name') 24 | endfunction 25 | 26 | function s:is_multiline(name) 27 | return a:name =~? '^cs\%(Comment\|String\)\%(End\)\=$' 28 | endfunction 29 | 30 | function GetCsIndent() abort 31 | " If there is no previous line, return 0. 32 | let prev_lnum = prevnonblank(v:lnum - 1) 33 | 34 | if prev_lnum == 0 35 | return 0 36 | endif 37 | 38 | let syngroup = s:syn_name_at(v:lnum, 1) 39 | 40 | " Do nothing if the current line is inside of a multiline region. 41 | if s:is_multiline(syngroup) 42 | return -1 43 | endif 44 | 45 | " If the previous line was a preprocessor directive or was inside of 46 | " a multiline region, find the nearest previous line that wasn't. 47 | let start_lnum = prev_lnum 48 | let start_line = getline(start_lnum) 49 | let [first_char, _, first_col] = start_line->matchstrpos('\S') 50 | 51 | while first_char ==# '#' || s:is_multiline(s:syn_name_at(start_lnum, 1)) 52 | let start_lnum = prevnonblank(start_lnum - 1) 53 | 54 | if start_lnum == 0 55 | return 0 56 | endif 57 | 58 | let start_line = getline(start_lnum) 59 | let [first_char, _, first_col] = start_line->matchstrpos('\S') 60 | endwhile 61 | 62 | " If the previous line was an attribute line or a comment, align with 63 | " the previous line. 64 | if first_char ==# '[' 65 | if s:syn_name_at(start_lnum, first_col) ==? 'csDelimiter' 66 | call cursor(start_lnum, first_col) 67 | 68 | if searchpair('\[', '', ']', 'z', s:skip_delimiter, start_lnum) 69 | return indent(start_lnum) 70 | endif 71 | endif 72 | elseif first_col ==# ']' 73 | if s:syn_name_at(start_lnum, first_col) ==? 'csDelimiter' 74 | return indent(start_lnum) 75 | endif 76 | endif 77 | 78 | " Otherwise, fall back to standard C indentation. 79 | return cindent(v:lnum) 80 | endfunction 81 | -------------------------------------------------------------------------------- /syntax/cs.vim: -------------------------------------------------------------------------------- 1 | " Vim syntax file 2 | " Language: C# 3 | " Author: Jeffrey Crochet 4 | " URL: https://github.com/jlcrochet/vim-cs 5 | 6 | if exists("b:current_syntax") 7 | finish 8 | endif 9 | 10 | let b:current_syntax = "cs" 11 | 12 | " Syntax {{{1 13 | syn sync fromstart 14 | 15 | " Miscellaneous (low priority) {{{2 16 | syn keyword csKeywordError contained 17 | \ abstract as 18 | \ base bool break byte 19 | \ case catch char checked class const continue 20 | \ decimal default delegate do double 21 | \ else enum event explicit extern 22 | \ false finally fixed float for foreach 23 | \ goto 24 | \ if implicit in int interface internal is 25 | \ lock long 26 | \ namespace new null 27 | \ object operator out override 28 | \ params private protected public 29 | \ readonly ref return 30 | \ sbyte sealed short sizeof stackalloc static string struct switch 31 | \ this throw true try typeof 32 | \ uint ulong unchecked unsafe ushort using 33 | \ virtual void volatile 34 | \ while 35 | 36 | syn match csDelimiter /\%#=1,/ containedin=@csExtras 37 | syn match csDelimiter /\%#=1;/ containedin=@csBlocks 38 | 39 | syn region csBlock matchgroup=csDelimiter start=/\%#=1{/ end=/\%#=1}/ contains=TOP fold 40 | 41 | " LHS {{{2 42 | syn keyword csStatement alias nextgroup=csIdentifier skipwhite skipempty 43 | 44 | syn keyword csStatement class struct nextgroup=csTypeName skipwhite skipempty 45 | syn match csTypeName /\%#=1\K\k*\%(\_s*<.\{-}>\)\=/ contained contains=csKeywordError,csGenericParameters nextgroup=csTypeBlock,csTypeInheritanceOperator,csTypeConstraint,csTypeConstructorParameters skipwhite skipempty 46 | syn match csTypeName /\%#=1@\K\k*\%(\_s*<.\{-}>\)\=/ contained contains=csGenericParameters nextgroup=csTypeBlock,csTypeInheritanceOperator,csTypeConstructorParameters skipwhite skipempty 47 | syn region csTypeConstructorParameters matchgroup=csDelimiter start=/\%#=1(/ end=/\%#=1)/ contained contains=csType,csTypeIdentifier,csModifier,csCollectionExpressionOrAttributes nextgroup=csTypeBlock,csTypeInheritanceOperator,csTypeConstraint skipwhite skipempty 48 | syn region csGenericParameters matchgroup=csDelimiter start=/\%#=1/ contained contains=csGenericParameter,csModifier nextgroup=csTypeBlock skipwhite skipempty 49 | syn match csGenericParameter /\%#=1\K\k*/ contained contains=csKeywordError 50 | syn match csGenericParameter /\%#=1@\K\k*/ contained 51 | syn match csTypeInheritanceOperator /\%#=1:/ contained nextgroup=csTypeInheritee,csTypeInheriteeKeyword skipwhite skipempty 52 | syn match csTypeInheritee /\%#=1\K\k*\%(\_s*<.\{-}>\)\=/ contained contains=csKeywordError,csGeneric nextgroup=csTypeBlock,csTypeInheriteeMemberOperator,csTypeInheriteeComma,csTypeConstraint,csTypeInheriteeArguments,csTypeConstraintModifier skipwhite skipempty 53 | syn match csTypeInheritee /\%#=1@\K\k*\%(\_s*<.\{-}>\)\=/ contained contains=csGeneric nextgroup=csTypeBlock,csTypeInheriteeMemberOperator,csTypeInheriteeComma,csTypeConstraint,csTypeInheriteeArguments,csTypeConstraintModifier skipwhite skipempty 54 | syn keyword csTypeInheriteeKeyword contained nextgroup=csTypeBlock,csTypeInheriteeComma,csTypeConstraint,csTypeConstraintModifier skipwhite skipempty 55 | \ sbyte short int long byte ushort uint ulong float double decimal nint nuint 56 | \ char bool object string void dynamic 57 | \ class struct enum default notnull 58 | syn match csTypeConstraintModifier /\%#=1?/ contained nextgroup=csTypeInheriteeMemberOperator,csTypeInheriteeComma,csTypeConstraint skipwhite skipempty 59 | syn keyword csTypeInheriteeKeyword new contained nextgroup=csTypeInheriteeArguments,csTypeInheritee skipwhite skipempty 60 | syn keyword csTypeInheriteeKeyword managed unmanaged contained nextgroup=csTypeBlock,csTypeInheriteeComma skipwhite skipempty 61 | syn region csTypeInheriteeArguments matchgroup=csDelimiter start=/\%#=1(/ end=/\%#=1)/ contained contains=@csRHS nextgroup=csTypeBlock,csTypeInheriteeComma,csTypeConstraint,csTypeConstraintLambdaOperator skipwhite skipempty 62 | syn match csTypeConstraintLambdaOperator /\%#=1=>/ contained nextgroup=csTypeInheriteeKeyword skipwhite skipempty 63 | syn match csTypeInheriteeMemberOperator /\%#=1\./ contained nextgroup=csTypeInheritee,csTypeInheriteeKeyword skipwhite skipempty 64 | syn match csTypeInheriteeComma /\%#=1,/ contained nextgroup=csTypeInheritee,csTypeInheriteeKeyword skipwhite skipempty 65 | syn keyword csTypeConstraint where contained nextgroup=csTypeVariable skipwhite skipempty 66 | syn match csTypeVariable /\%#=1\K\k*/ contained contains=csKeywordError nextgroup=csTypeInheritanceOperator skipwhite skipempty 67 | syn match csTypeVariable /\%#=1@\K\k*/ contained nextgroup=csTypeInheritanceOperator skipwhite skipempty 68 | syn region csTypeBlock matchgroup=csDelimiter start=/\%#=1{/ end=/\%#=1}/ contained contains=csStatement,csModifier,csType,csTypeIdentifier,csBlock,csDeclaratorComma,csCollectionExpressionOrAttributes,csOperatorModifier,csTypeTuple,csConstructor fold 69 | 70 | syn keyword csStatement interface nextgroup=csInterfaceName skipwhite skipempty 71 | syn match csInterfaceName /\%#=1\K\k*\%(\_s*<.\{-}>\)\=/ contained contains=csKeywordError,csGenericParameters nextgroup=csTypeBlock,csTypeInheritanceOperator,csTypeConstraint skipwhite skipempty 72 | syn match csInterfaceName /\%#=1@\K\k*\%(\_s*<.\{-}>\)\=/ contained contains=csGenericParameters nextgroup=csTypeBlock,csTypeInheritanceOperator skipwhite skipempty 73 | 74 | syn keyword csStatement record nextgroup=csTypeName,csRecordModifier skipwhite skipempty 75 | syn keyword csRecordModifier class struct contained nextgroup=csTypeName skipwhite skipempty 76 | 77 | syn match csDestructorSign /\%#=1\~/ contained containedin=csTypeBlock nextgroup=csDestructor skipwhite skipempty 78 | syn match csDestructor /\%#=1\K\k*/ contained contains=csKeywordError nextgroup=csParameters skipwhite skipempty 79 | syn match csDestructor /\%#=1@\K\k*/ contained nextgroup=csParameters skipwhite skipempty 80 | 81 | syn keyword csStatement enum nextgroup=csEnumName skipwhite skipempty 82 | syn match csEnumName /\%#=1\K\k*/ contained contains=csKeywordError nextgroup=csEnumBlock,csEnumInheritanceOperator skipwhite skipempty 83 | syn match csEnumName /\%#=1@\K\k*/ contained nextgroup=csEnumBlock,csEnumInheritanceOperator skipwhite skipempty 84 | syn match csEnumInheritanceOperator /\%#=1:/ contained nextgroup=csEnumType skipwhite skipempty 85 | syn keyword csEnumType byte sbyte short ushort int uint long ulong nint nuint contained nextgroup=csEnumBlock skipwhite skipempty 86 | syn region csEnumBlock matchgroup=csDelimiter start=/\%#=1{/ end=/\%#=1}/ contained contains=csDeclarator fold 87 | 88 | syn keyword csStatement namespace nextgroup=csNamespaceName skipwhite skipempty 89 | syn match csNamespaceName /\%#=1\K\k*/ contained contains=csKeywordError nextgroup=csNamespaceNameSeparator,csNamespaceBlock skipwhite skipempty 90 | syn match csNamespaceName /\%#=1@\K\k*/ contained nextgroup=csNamespaceNameSeparator,csNamespaceBlock skipwhite skipempty 91 | syn match csNamespaceNameSeparator /\%#=1\./ contained nextgroup=csNamespaceName skipwhite skipempty 92 | syn region csNamespaceBlock matchgroup=csDelimiter start=/\%#=1{/ end=/\%#=1}/ contained contains=TOP fold 93 | 94 | syn keyword csStatement if switch while nextgroup=csCondition skipwhite skipempty 95 | syn region csCondition matchgroup=csDelimiter start=/\%#=1(/ end=/\%#=1)/ contained contains=@csRHS nextgroup=csBlock skipwhite skipempty 96 | 97 | syn keyword csStatement else do nextgroup=csBlock skipwhite skipempty 98 | 99 | syn keyword csStatement case nextgroup=@csPatterns skipwhite skipempty 100 | 101 | syn keyword csStatement default 102 | 103 | syn keyword csStatement for foreach nextgroup=csIteratorExpression skipwhite skipempty 104 | syn region csIteratorExpression matchgroup=csDelimiter start=/\%#=1(/ end=/\%#=1)/ contained contains=TOP nextgroup=csBlock skipwhite skipempty 105 | 106 | syn keyword csStatement break continue yield 107 | 108 | syn keyword csStatement goto 109 | 110 | syn keyword csStatement return throw nextgroup=@csRHS skipwhite skipempty 111 | 112 | syn keyword csStatement try finally nextgroup=csBlock skipwhite skipempty 113 | syn keyword csStatement catch nextgroup=csCatchCondition skipwhite skipempty 114 | syn region csCatchCondition matchgroup=csDelimiter start=/\%#=1(/ end=/\%#=1)/ contained contains=csTypeIdentifier nextgroup=csOperatorKeyword,csBlock skipwhite skipempty 115 | 116 | syn keyword csStatement checked unchecked nextgroup=csBlock skipwhite skipempty 117 | 118 | syn keyword csStatement lock nextgroup=csCondition skipwhite skipempty 119 | 120 | syn keyword csModifier 121 | \ abstract async 122 | \ const 123 | \ event explicit extern 124 | \ fixed 125 | \ global 126 | \ implicit in internal 127 | \ new 128 | \ out override 129 | \ params partial private protected public 130 | \ ref readonly required 131 | \ sealed static 132 | \ unsafe 133 | \ virtual volatile 134 | 135 | syn keyword csModifier delegate nextgroup=csFunctionPointerModifier skipwhite skipempty 136 | syn match csFunctionPointerModifier /\%#=1\*/ contained nextgroup=csGeneric,csFunctionPointerManaged skipwhite skipempty 137 | syn keyword csFunctionPointerManaged managed unmanaged contained nextgroup=csGeneric,csFunctionPointerTypes skipwhite skipempty 138 | syn region csFunctionPointerTypes matchgroup=csDelimiter start=/\%#=1\[/ end=/\%#=1\]/ contained contains=csTypeIdentifier nextgroup=csGeneric skipwhite skipempty 139 | 140 | syn keyword csStatement using nextgroup=csGuardedStatement,csStatement,csIdentifier,csUsingStatic skipwhite skipempty 141 | syn keyword csUsingStatic static contained nextgroup=csIdentifier skipwhite skipempty 142 | syn keyword csStatement fixed nextgroup=csGuardedStatement skipwhite skipempty 143 | syn region csGuardedStatement matchgroup=csDelimiter start=/\%#=1(/ end=/\%#=1)/ contained contains=TOP 144 | 145 | syn keyword csOperatorModifier operator nextgroup=csOperatorMethod,csBooleanOperatorMethod,csConversionMethod,csConversionMethodKeyword skipwhite skipempty 146 | syn match csOperatorMethod /\%#=1\%(++\=\|--\=\|[~*/%&|^]\|[=!]=\|<[<=]\=\|>[>=]\=\|\.\.\)/ contained nextgroup=csParameters skipwhite skipempty 147 | syn keyword csBooleanOperatorMethod true false contained nextgroup=csParameters skipwhite skipempty 148 | syn match csConversionMethod /\%#=1\K\k*/ contained contains=csKeywordError nextgroup=csParameters skipwhite skipempty 149 | syn match csConversionMethod /\%#=1@\K\k*/ contained nextgroup=csParameters skipwhite skipempty 150 | syn keyword csConversionMethodKeyword contained nextgroup=csParameters skipwhite skipempty 151 | \ sbyte short int long byte ushort uint ulong float double decimal nint nuint 152 | \ char bool object string void dynamic 153 | 154 | syn keyword csType nextgroup=csDeclarator,csIndexerThis,csMemberOperator,csInvocation,csTypeModifier,csOperatorModifier skipwhite skipempty 155 | \ sbyte short int long byte ushort uint ulong float double decimal nint nuint 156 | \ char bool object string void dynamic 157 | 158 | syn keyword csStatement var nextgroup=csDeclarator,csTupleDeclarator skipwhite skipempty 159 | syn region csTupleDeclarator matchgroup=csDelimiter start=/\%#=1(/ end=/\%#=1)/ contained contains=csDeclarator,csTupleDeclarator nextgroup=csAssignmentOperator skipwhite skipempty 160 | 161 | syn match csIdentifier /\%#=1@\=\K\k*\%(<.\{-}>\)\=\%([*?]\.\@!\|\[.\{-}\]\)*/ contains=csGeneric,csTypeModifier nextgroup=csDeclarator,csIndexerThis,@csOperators,csInvocation,csIndex,csOperatorModifier,csPropertyBlock,csTypeMemberOperator skipwhite skipempty 162 | syn region csGeneric matchgroup=csDelimiter start=/\%#=1/ contained contains=csType,csTypeTuple,csTypeIdentifier,csModifier nextgroup=csDeclarator,csIndexerThis,csOperatorModifier,csPropertyBlock skipwhite skipempty 163 | syn region csInvocation matchgroup=csDelimiter start=/\%#=1(/ end=/\%#=1)/ contained contains=@csRHS nextgroup=csInvocation,csIndex,@csOperators skipwhite skipempty 164 | syn region csIndex matchgroup=csDelimiter start=/\%#=1\[/ end=/\%#=1\]/ contained contains=@csRHS nextgroup=csInvocation,csIndex,@csOperators skipwhite skipempty 165 | 166 | syn keyword csConstant this base nextgroup=@csOperators,csInvocation,csIndex skipwhite skipempty 167 | 168 | syn keyword csIndexerThis this contained nextgroup=csIndexerParameters skipwhite skipempty 169 | syn region csIndexerParameters matchgroup=csDelimiter start=/\%#=1\[/ end=/\%#=1\]/ contained contains=csTypeIdentifier,csModifier nextgroup=csPropertyBlock,csLambdaOperator skipwhite skipempty 170 | 171 | syn match csDeclarator /\%#=1\K\k*\%(\_s*<.\{-}>\)\=/ contained contains=csKeywordError,csGenericParameters nextgroup=csAssignmentOperator,csLambdaOperator,csParameters,csPropertyBlock,csDeclaratorMemberOperator,csOperatorKeyword skipwhite skipempty 172 | syn match csDeclarator /\%#=1@\K\k*\%(\_s*<.\{-}>\)\=/ contained contains=csGenericParameters nextgroup=csAssignmentOperator,csLambdaOperator,csParameters,csPropertyBlock,csDeclaratorMemberOperator,csOperatorKeyword skipwhite skipempty 173 | syn match csNotDeclarator /\%#=1\<\K\k*\%(\_s*<.\{-}>\)\=\ze\s*\./ contained containedin=csDeclarator contains=csGeneric 174 | syn match csNotDeclarator /\%#=1@\K\k*\%(\_s*<.\{-}>\)\=\ze\s*\./ contained containedin=csDeclarator contains=csGeneric 175 | syn match csDeclaratorMemberOperator /\%#=1\./ contained nextgroup=csDeclarator,csIdentifier,csIndexerThis skipwhite skipempty 176 | syn region csParameters matchgroup=csDelimiter start=/\%#=1(/ end=/\%#=1)/ contained contains=csTypeIdentifier,csModifier,csThisModifier,csTypeTuple,csCollectionExpressionOrAttributes nextgroup=csLambdaOperator,csBlock,csMethodTypeConstraint skipwhite skipempty 177 | syn keyword csThisModifier this contained 178 | syn region csPropertyBlock matchgroup=csDelimiter start=/\%#=1{/ end=/\%#=1}/ contained contains=csAccessor,csModifier nextgroup=csAssignmentOperator skipwhite skipempty fold 179 | syn keyword csAccessor get set init add remove contained nextgroup=csBlock,csLambdaOperator skipwhite skipempty 180 | syn match csDeclaratorComma /\%#=1,/ nextgroup=csDeclarator skipwhite skipempty 181 | 182 | syn match csMethodTypeInheritanceOperator /\%#=1:/ contained nextgroup=csMethodTypeInheritee,csMethodTypeInheriteeKeyword skipwhite skipempty 183 | syn match csMethodTypeInheritee /\%#=1\K\k*\%(\_s*<.\{-}>\)\=/ contained contains=csKeywordError,csGeneric nextgroup=csMethodTypeInheriteeMemberOperator,csMethodTypeInheriteeComma,csMethodTypeConstraint,csMethodTypeConstraintModifier,csMethodTypeInheriteeArguments,csLambdaOperator skipwhite skipempty 184 | syn match csMethodTypeInheritee /\%#=1@\K\k*\%(\_s*<.\{-}>\)\=/ contained contains=csGeneric nextgroup=csMethodTypeInheriteeMemberOperator,csMethodTypeInheriteeComma,csMethodTypeConstraint,csMethodTypeConstraintModifier,csMethodTypeInheriteeArguments,csLambdaOperator skipwhite skipempty 185 | syn keyword csMethodTypeInheriteeKeyword contained nextgroup=csMethodTypeInheriteeComma,csMethodTypeConstraint,csMethodTypeConstraintModifier,csMethodTypeConstraintLambdaOperator skipwhite skipempty 186 | \ sbyte short int long byte ushort uint ulong float double decimal nint nuint 187 | \ char bool object string void dynamic 188 | \ class struct enum default notnull 189 | syn match csMethodTypeConstraintModifier /\%#=1?/ contained nextgroup=csMethodTypeInheriteeMemberOperator,csMethodTypeInheriteeComma,csMethodTypeConstraint,csLambdaOperator skipwhite skipempty 190 | syn keyword csMethodTypeInheriteeKeyword new contained nextgroup=csMethodTypeInheriteeArguments,csMethodTypeInheritee skipwhite skipempty 191 | syn keyword csMethodTypeInheriteeKeyword managed unmanaged contained nextgroup=csMethodTypeInheriteeComma,csLambdaOperator skipwhite skipempty 192 | syn region csMethodTypeInheriteeArguments matchgroup=csDelimiter start=/\%#=1(/ end=/\%#=1)/ contained nextgroup=csMethodTypeInheriteeComma,csMethodTypeConstraint,csMethodTypeConstraintLambdaOperator skipwhite skipempty 193 | syn match csMethodTypeConstraintLambdaOperator /\%#=1=>/ contained nextgroup=csMethodTypeInheriteeKeyword skipwhite skipempty 194 | syn match csMethodTypeInheriteeMemberOperator /\%#=1\./ contained nextgroup=csMethodTypeInheritee,csMethodTypeInheriteeKeyword skipwhite skipempty 195 | syn match csMethodTypeInheriteeComma /\%#=1,/ contained nextgroup=csMethodTypeInheritee,csMethodTypeInheriteeKeyword skipwhite skipempty 196 | syn keyword csMethodTypeConstraint where contained nextgroup=csMethodTypeVariable skipwhite skipempty 197 | syn match csMethodTypeVariable /\%#=1\K\k*/ contained contains=csKeywordError nextgroup=csMethodTypeInheritanceOperator skipwhite skipempty 198 | syn match csMethodTypeVariable /\%#=1@\K\k*/ contained nextgroup=csMethodTypeInheritanceOperator skipwhite skipempty 199 | 200 | syn region csTypeTuple matchgroup=csDelimiter start=/\%#=1(/ end=/\%#=1)/ contained contains=csType,csTypeTuple,csIdentifier nextgroup=csDeclarator,csIndexerThis,csTypeModifier,csOperatorModifier skipwhite skipempty 201 | 202 | syn region csGroup matchgroup=csDelimiter start=/\%#=1(/ end=/\%#=1)/ contains=@csRHS,csRHSTypeIdentifier nextgroup=@csOperators,csDeclarator,csInvocation,csIndex skipwhite skipempty 203 | 204 | syn region csCollectionExpressionOrAttributes matchgroup=csDelimiter start=/\%#=1\[/ end=/\%#=1\]/ contains=@csRHS,csAttribute 205 | 206 | syn match csAssignmentOperator /\%#=1=/ contained nextgroup=@csRHS,csRHSTypeIdentifier,csInitializer skipwhite skipempty 207 | 208 | syn match csLambdaOperator /\%#=1=>/ contained nextgroup=@csRHS,csBlock skipwhite skipempty 209 | 210 | syn match csMemberOperator /\%#=1?\=\./ contained nextgroup=csIdentifier,csConstant skipwhite skipempty 211 | syn match csMemberOperator /\%#=1->/ contained nextgroup=csIdentifier skipwhite skipempty 212 | syn match csMemberOperator /\%#=1::/ contained nextgroup=csIdentifier skipwhite skipempty 213 | 214 | syn match csNullForgivingOperator /\%#=1!/ contained nextgroup=csMemberOperator,csInvocation,csIndex skipwhite skipempty 215 | 216 | syn match csIncrementOperator /\%#=1++/ 217 | syn match csDecrementOperator /\%#=1--/ 218 | syn match csPointerOperator /\%#=1[*&]/ 219 | 220 | " RHS {{{2 221 | syn cluster csLiterals contains= 222 | \ csNumber,csBoolean,csNull,csRHSConstant,csCharacter,csString 223 | 224 | syn cluster csRHS contains= 225 | \ @csLiterals, 226 | \ csUnaryOperator,csUnaryOperatorKeyword,csRHSIdentifier,csRHSType, 227 | \ csRHSGroup,csCollectionExpressionOrAttributes,csLINQExpression 228 | 229 | syn cluster csOperators contains=csOperator,csOperatorKeyword,csComment 230 | 231 | syn match csUnaryOperator /\%#=1++\=/ contained nextgroup=@csRHS skipwhite skipempty 232 | syn match csUnaryOperator /\%#=1--\=/ contained nextgroup=@csRHS skipwhite skipempty 233 | syn match csUnaryOperator /\%#=1\.\./ contained nextgroup=@csRHS skipwhite skipempty 234 | syn match csUnaryOperator /\%#=1[!~*&^]/ contained nextgroup=@csRHS skipwhite skipempty 235 | 236 | syn keyword csUnaryOperatorKeyword new nextgroup=csRHSIdentifier,csRHSType,csInitializer,csRHSInvocation,csRHSIndex skipwhite skipempty 237 | syn keyword csUnaryOperatorKeyword stackalloc nextgroup=csRHSIdentifier,csRHSType,csInitializer,csRHSIndex skipwhite skipempty 238 | syn keyword csUnaryOperatorKeyword out in contained nextgroup=@csRHS skipwhite skipempty 239 | syn keyword csUnaryOperatorKeyword ref contained nextgroup=@csRHS,csReadonly skipwhite skipempty 240 | syn keyword csReadonly readonly contained nextgroup=@csRHS skipwhite skipempty 241 | syn keyword csUnaryOperatorKeyword await nextgroup=csStatement,@csRHS skipwhite skipempty 242 | syn keyword csUnaryOperatorKeyword async params contained nextgroup=csRHSTypeIdentifier,csRHSType,csRHSGroup skipwhite skipempty 243 | syn keyword csUnaryOperatorKeyword throw nextgroup=@csRHS skipwhite skipempty 244 | syn keyword csUnaryOperatorKeyword static contained nextgroup=csRHSType,csRHSIdentifier skipwhite skipempty 245 | syn keyword csUnaryOperatorKeyword delegate contained nextgroup=csFunctionPointerModifier skipwhite skipempty 246 | syn keyword csUnaryOperatorKeyword not contained nextgroup=@csPatterns skipwhite skipempty 247 | 248 | syn keyword csUnaryOperatorKeyword typeof checked unchecked sizeof nameof contained nextgroup=csRHSInvocation skipwhite skipempty 249 | syn keyword csUnaryOperatorKeyword default contained nextgroup=csRHSInvocation,@csOperators skipwhite skipempty 250 | 251 | syn keyword csUnaryOperatorKeyword var contained nextgroup=csRHSDeclarator,csRHSTupleDeclarator skipwhite skipempty 252 | syn match csRHSDeclarator /\%#=1\K\k*/ contained contains=csKeywordError nextgroup=@csOperators skipwhite skipempty 253 | syn match csRHSDeclarator /\%#=1@\K\k*/ contained nextgroup=@csOperators skipwhite skipempty 254 | syn region csRHSTupleDeclarator matchgroup=csDelimiter start=/\%#=1(/ end=/\%#=1)/ contained contains=csRHSDeclarator nextgroup=@csOperators skipwhite skipempty 255 | 256 | syn keyword csRHSType contained nextgroup=csMemberOperator,csRHSGroup,csRHSIndex,csRHSDeclarator,csTypeModifier,csOperatorKeyword skipwhite skipempty 257 | \ sbyte short int long byte ushort uint ulong float double decimal nint nuint 258 | \ char bool object string void dynamic 259 | 260 | syn match csRHSIdentifier /\%#=1\K\k*\%(<.\{-}>\)\=/ contained contains=csKeywordError,csGeneric nextgroup=@csOperators,csRHSInvocation,csRHSIndex,csInitializer,csOperatorModifier skipwhite skipempty 261 | syn match csRHSIdentifier /\%#=1@\K\k*\%(<.\{-}>\)\=/ contained contains=csGeneric nextgroup=@csOperators,csRHSInvocation,csRHSIndex,csInitializer,csOperatorModifier skipwhite skipempty 262 | syn region csRHSInvocation matchgroup=csDelimiter start=/\%#=1(/ end=/\%#=1)/ contained contains=@csRHS nextgroup=@csOperators,csInitializer,csRHSInvocation,csRHSIndex skipwhite skipempty 263 | syn region csRHSIndex matchgroup=csDelimiter start=/\%#=1\[/ end=/\%#=1\]/ contained contains=@csRHS nextgroup=@csOperators,csRHSInvocation,csRHSIndex,csInitializer skipwhite skipempty 264 | 265 | syn region csInitializer matchgroup=csDelimiter start=/\%#=1{/ end=/\%#=1}/ contained contains=@csRHS,csInitializer,csIndexSetter nextgroup=@csOperators skipwhite skipempty 266 | 267 | syn match csNumber /\%#=1\c\d\+\%(_\+\d\+\)*\%(\%(lu\=\|ul\=\)\|[dmf]\|\.\d\+\%(_\+\d\+\)*\%(e[+-]\=\d\+\%(_\+\d\+\)*\)\=[dmf]\=\|e[+-]\=\d\+\%(_\+\d\+\)*[dmf]\=\)\=/ contained nextgroup=@csOperators skipwhite skipempty 268 | syn match csNumber /\%#=1\c0b_*[01]\+\%(_\+[01]\+\)*\%(lu\=\|ul\=\)\=/ contained nextgroup=@csOperators skipwhite skipempty 269 | syn match csNumber /\%#=1\c0x_*\x\+\%(_\+\x\+\)*\%(\%(lu\=\|ul\=\)\|[dmf]\|e[+-]\=\d\+\%(_\+\d\+\)*[dmf]\=\)\=/ contained nextgroup=@csOperators skipwhite skipempty 270 | syn match csNumber /\%#=1\c\.\d\+\%(_\+\d\+\)*\%(e[+-]\=\d\+\%(_\+\d\+\)*\)\=[dmf]\=/ contained nextgroup=@csOperators skipwhite skipempty 271 | 272 | syn keyword csBoolean true false contained nextgroup=@csOperators skipwhite skipempty 273 | syn keyword csNull null contained nextgroup=@csOperators skipwhite skipempty 274 | syn keyword csRHSConstant this base contained nextgroup=@csOperators,csRHSInvocation,csRHSIndex skipwhite skipempty 275 | 276 | syn region csCharacter matchgroup=csCharacterDelimiter start=/\%#=1'/ end=/\%#=1'/ contained contains=csEscapeSequence,csEscapeSequenceError nextgroup=@csOperators skipwhite skipempty 277 | 278 | syn region csString matchgroup=csStringStart start=/\%#=1"/ matchgroup=csStringEnd end=/\%#=1"\%(u8\)\=/ contained contains=csEscapeSequence,csEscapeSequenceError nextgroup=@csOperators skipwhite skipempty 279 | syn region csString matchgroup=csStringStart start=/\%#=1\$"/ matchgroup=csStringEnd end=/\%#=1"\%(u8\)\=/ contained contains=csBraceEscape,csEscapeSequence,csEscapeSequenceError,csStringInterpolation,csStringInterpolationError nextgroup=@csOperators skipwhite skipempty 280 | syn region csString matchgroup=csStringStart start=/\%#=1@"/ matchgroup=csStringEnd end=/\%#=1"\%(u8\)\=/ contained skip=/\%#=1""/ contains=csQuoteEscape nextgroup=@csOperators skipwhite skipempty 281 | syn region csString matchgroup=csStringStart start=/\%#=1\$@"/ matchgroup=csStringEnd end=/\%#=1"\%(u8\)\=/ contained skip=/\%#=1""/ contains=csQuoteEscape,csBraceEscape,csStringInterpolation,csStringInterpolationError nextgroup=@csOperators skipwhite skipempty 282 | syn region csString matchgroup=csStringStart start=/\%#=1@\$"/ matchgroup=csStringEnd end=/\%#=1"\%(u8\)\=/ contained skip=/\%#=1""/ contains=csQuoteEscape,csBraceEscape,csStringInterpolation,csStringInterpolationError nextgroup=@csOperators skipwhite skipempty 283 | syn region csString matchgroup=csStringStart start=/\%#=1\z("\{3,}\)/ matchgroup=csStringEnd end=/\%#=1\z1\%(u8\)\=/ contained nextgroup=@csOperators skipwhite skipempty 284 | syn region csString matchgroup=csStringStart start=/\%#=1\$\+\z("\{3,}\)/ matchgroup=csStringEnd end=/\%#=1\z1\%(u8\)\=/ contained contains=csBraceEscape,csStringInterpolation,csStringInterpolationError nextgroup=@csOperators skipwhite skipempty 285 | 286 | syn match csStringInterpolationError /\%#=1[{}]/ contained 287 | syn region csStringInterpolation matchgroup=csStringInterpolationDelimiter start=/\%#=1{/ end=/\%#=1\%([,:].\{-}\)\=}/ contained contains=@csRHS 288 | 289 | syn match csEscapeSequenceError /\%#=1\\./ contained 290 | syn match csEscapeSequence /\%#=1\\\%(['"\\0abfnrtv]\|x\x\{1,4}\|u\x\{4}\|U\x\{8}\)/ contained 291 | 292 | syn match csQuoteEscape /\%#=1""/ contained 293 | syn match csBraceEscape /\%#=1{{/ contained 294 | syn match csBraceEscape /\%#=1}}/ contained 295 | 296 | syn match csOperator /\%#=1!/ contained nextgroup=@csOperators,csRHSInvocation,csRHSIndex skipwhite skipempty 297 | syn match csOperator /\%#=1=/ contained nextgroup=@csRHS,csInitializer skipwhite skipempty 298 | syn match csOperator /\%#=1[=!]=/ contained nextgroup=@csRHS skipwhite skipempty 299 | syn match csOperator /\%#=1[+*/%]=\=/ contained nextgroup=@csRHS skipwhite skipempty 300 | syn match csOperator /\%#=1=>/ contained nextgroup=@csRHS,csBlock skipwhite skipempty 301 | syn match csOperator /\%#=1-[>=]\=/ contained nextgroup=@csRHS skipwhite skipempty 302 | syn match csOperator /\%#=1++/ contained nextgroup=@csOperators skipwhite skipempty 303 | syn match csOperator /\%#=1--/ contained nextgroup=@csOperators skipwhite skipempty 304 | syn match csOperator /\%#=1<<\==\=/ contained nextgroup=@csRHS skipwhite skipempty 305 | syn match csOperator /\%#=1>>\=>\==\=/ contained nextgroup=@csRHS skipwhite skipempty 306 | syn match csOperator /\%#=1&&\==\=/ contained nextgroup=@csRHS skipwhite skipempty 307 | syn match csOperator /\%#=1||\==\=/ contained nextgroup=@csRHS skipwhite skipempty 308 | syn match csOperator /\%#=1?\%(?=\=\)\=/ contained nextgroup=@csRHS skipwhite skipempty 309 | 310 | syn match csOperator /\%#=1\./ contained nextgroup=csRHSIdentifier,csRHSConstant skipwhite skipempty 311 | syn match csOperator /\%#=1\.\./ contained nextgroup=@csRHS skipwhite skipempty 312 | syn match csOperator /\%#=1?\./ contained nextgroup=csRHSIdentifier,csRHSConstant skipwhite skipempty 313 | syn match csOperator /\%#=1:/ contained nextgroup=@csRHS,csStatement skipwhite skipempty 314 | syn match csOperator /\%#=1::/ contained nextgroup=csRHSIdentifier skipwhite skipempty 315 | 316 | syn region csRHSGroup matchgroup=csDelimiter start=/\%#=1(/ end=/\%#=1)/ contained contains=@csRHS,csRHSTypeIdentifier nextgroup=@csRHS,@csOperators skipwhite skipempty 317 | syn match csRHSTypeIdentifier /\%#=1\K\k*\%(<.\{-}>\)\=\%([*?]\.\@!\|\[.\{-}\]\)*/ contained contains=csType,csKeywordError,csGeneric,csTypeModifier nextgroup=@csOperators,csRHSGroup,csRHSIndex,csDeclarator skipwhite skipempty 318 | syn match csRHSTypeIdentifier /\%#=1@\K\k*\%(<.\{-}>\)\=\%([*?]\.\@!\|\[.\{-}\]\)*/ contained contains=csGeneric,csTypeModifier nextgroup=@csOperators,csRHSGroup,csRHSIndex,csDeclarator skipwhite skipempty 319 | 320 | syn keyword csOperatorKeyword as contained nextgroup=csRHSTypeIdentifier skipwhite skipempty 321 | syn keyword csOperatorKeyword in when contained nextgroup=@csRHS skipwhite skipempty 322 | syn keyword csOperatorKeyword and or contained nextgroup=@csPatterns skipwhite skipempty 323 | 324 | syn keyword csOperatorKeyword is contained nextgroup=@csPatterns skipwhite skipempty 325 | syn keyword csOperatorKeyword switch contained nextgroup=csPatternBlock skipwhite skipempty 326 | syn region csPatternBlock matchgroup=csDelimiter start=/\%#=1{/ end=/\%#=1}/ contained contains=@csPatterns nextgroup=@csOperators skipwhite skipempty fold 327 | 328 | syn cluster csPatterns contains=csPatternType,csPatternTypeIdentifier,csUnaryOperatorKeyword,@csLiterals,csOperator,csPatternGroup,csPatternProperties,csPatternList 329 | 330 | syn keyword csPatternType contained nextgroup=csPatternDeclarator,csPatternTypeMemberOperator,csPatternGroup,csPatternProperties,csOperatorKeyword skipwhite skipempty 331 | \ sbyte short int long byte ushort uint ulong float double decimal nint nuint 332 | \ char bool object string void dynamic 333 | 334 | syn match csPatternTypeIdentifier /\%#=1\K\k*\%(<.\{-}>\)\=/ contained contains=csGeneric,csKeywordError nextgroup=csPatternDeclarator,csLambdaOperator,csPatternTypeMemberOperator,csPatternGroup,csPatternProperties,csOperatorKeyword skipwhite skipempty 335 | syn match csPatternTypeIdentifier /\%#=1@\K\k*\%(<.\{-}>\)\=/ contained contains=csGeneric nextgroup=csPatternDeclarator,csLambdaOperator,csPatternTypeMemberOperator,csPatternGroup,csPatternProperties,csOperatorKeyword skipwhite skipempty 336 | 337 | syn match csPatternTypeMemberOperator /\%#=1\./ contained nextgroup=csPatternTypeIdentifier skipwhite skipempty 338 | 339 | syn match csPatternDeclarator /\%#=1\K\k*/ contained contains=csKeywordError nextgroup=@csOperators skipwhite skipempty 340 | syn match csPatternDeclarator /\%#=1@\K\k*/ contained nextgroup=@csOperators skipwhite skipempty 341 | 342 | syn region csPatternGroup matchgroup=csDelimiter start=/\%#=1(/ end=/\%#=1)/ contained contains=@csPatterns nextgroup=@csOperators,csPatternDeclarator,csPatternProperties skipwhite skipempty 343 | 344 | syn region csPatternProperties matchgroup=csDelimiter start=/\%#=1{/ end=/\%#=1}/ contained contains=csPatternProperty nextgroup=@csOperators,csPatternDeclarator skipwhite skipempty 345 | syn match csPatternProperty /\%#=1\K\k*/ contained contains=csKeywordError nextgroup=csPatternPropertyColon,csPatternPropertyMemberOperator skipwhite skipempty 346 | syn match csPatternProperty /\%#=1@\K\k*/ contained nextgroup=csPatternPropertyColon,csPatternPropertyMemberOperator skipwhite skipempty 347 | syn match csPatternPropertyColon /\%#=1:/ contained nextgroup=@csPatterns skipwhite skipempty 348 | syn match csPatternPropertyMemberOperator /\%#=1\./ contained nextgroup=csPatternProperty skipwhite skipempty 349 | 350 | syn region csPatternList matchgroup=csDelimiter start=/\%#=1\[/ end=/\%#=1]/ contained contains=@csPatterns,csPatternSlice,csPatternListVar nextgroup=@csOperators skipwhite skipempty 351 | syn match csPatternSlice /\%#=1\.\./ contained 352 | syn keyword csPatternListVar var contained nextgroup=csPatternListDeclarator skipwhite skipempty 353 | syn match csPatternListDeclarator /\%#=1\K\k*/ contained contains=csKeywordError nextgroup=csPatternListDeclaratorComma skipwhite skipempty 354 | syn match csPatternListDeclarator /\%#=1@\K\k*/ contained nextgroup=csPatternListDeclaratorComma skipwhite skipempty 355 | syn match csPatternListDeclaratorComma /\%#=1,/ contained nextgroup=csPatternListDeclarator skipwhite skipempty 356 | 357 | syn keyword csOperatorKeyword with contained nextgroup=csInitializer skipwhite skipempty 358 | 359 | syn region csIndexSetter matchgroup=csDelimiter start=/\%#=1\[/ end=/\%#=1]/ contained contains=@csRHS nextgroup=csAssignmentOperator skipwhite skipempty 360 | 361 | syn region csLINQExpression start=/\%#=1\/ end=/\%#=1[)\]};]\@=/ contained transparent contains=csLINQKeyword,@csRHS 362 | syn keyword csLINQKeyword from into contained nextgroup=csLINQDeclarator,csLINQDeclaration skipwhite skipempty 363 | syn match csLINQDeclaration /\%#=1@\=\K\k*\%(\.@\=\K\k*\)*\%(<.\{-}>\)\=\s\+\%(in\>\)\@!@\=\K\k*/ contained contains=csType,csIdentifier 364 | syn keyword csLINQKeyword let join contained nextgroup=csLINQDeclarator skipwhite skipempty 365 | syn keyword csLINQKeyword in where select orderby group by ascending descending on equals contained 366 | syn match csLINQDeclarator /\%#=1\K\k*/ contained contains=csKeywordError nextgroup=csAssignmentOperator skipwhite skipempty 367 | syn match csLINQDeclarator /\%#=1@\K\k*/ contained nextgroup=csAssignmentOperator skipwhite skipempty 368 | 369 | " Miscellaneous (high priority) {{{2 370 | syn region csComment matchgroup=csCommentStart start=/\%#=1\/\// end=/\%#=1$/ contains=csTodo containedin=@csExtras 371 | syn region csComment matchgroup=csCommentStart start=/\%#=1\/\*/ matchgroup=csCommentEnd end=/\%#=1\*\// contains=csTodo containedin=@csExtras 372 | syn region csComment matchgroup=csCommentStart start=/\%#=1\/\/\// end=/\%#=1$/ keepend contains=csTodo,csXMLTagStart containedin=@csExtras 373 | syn keyword csTodo TODO NOTE XXX FIXME HACK TBD contained 374 | 375 | syn match csXMLTagStart /\%#=1<\/\=/ contained nextgroup=csXMLTagName 376 | syn match csXMLTagName /\%#=1\a[^[:space:]\>]*/ contained nextgroup=csXMLAttribute,csXMLTagEnd skipwhite 377 | syn match csXMLAttribute /\%#=1[^>/=[:space:]]\+/ contained nextgroup=csXMLAttributeOperator,csXMLTagEnd skipwhite 378 | syn match csXMLAttributeOperator /\%#=1=/ contained nextgroup=csXMLValue skipwhite 379 | syn region csXMLValue matchgroup=csXMLValueDelimiter start=/\%#=1"/ end=/\%#=1"/ contained nextgroup=csXMLTagEnd skipwhite 380 | syn region csXMLValue matchgroup=csXMLValueDelimiter start=/\%#=1'/ end=/\%#=1'/ contained nextgroup=csXMLTagEnd skipwhite 381 | syn match csXMLTagEnd /\%#=1\/\=>/ contained 382 | 383 | syn match csDirective /\%#=1#.*/ containedin=@csBlocks 384 | syn region csRegion matchgroup=csDirective start=/\%#=1#region\>.*/ end=/\%#=1#endregion\>.*/ containedin=@csBlocks,csRegion transparent fold 385 | 386 | syn match csTypeModifier /\%#=1[*?]/ contained nextgroup=csDeclarator,csTypeModifier skipwhite skipempty 387 | syn region csTypeModifier matchgroup=csDelimiter start=/\%#=1\[/ end=/\%#=1\]/ contained contains=@csRHS nextgroup=csDeclarator,csInitializer,csTypeModifier skipwhite skipempty 388 | 389 | syn match csTypeIdentifier /\%#=1\K\k*\%(<.\{-}>\)\=\%([*?]\.\@!\|\[.\{-}\]\)*/ contained contains=csType,csKeywordError,csGeneric,csTypeModifier nextgroup=csDeclarator,csIndexerThis,csTypeMemberOperator,csOperatorModifier,csOperator skipwhite skipempty 390 | syn match csTypeIdentifier /\%#=1@\K\k*\%(<.\{-}>\)\=\%([*?]\.\@!\|\[.\{-}\]\)*/ contained contains=csGeneric,csTypeModifier nextgroup=csDeclarator,csIndexerThis,csTypeMemberOperator,csOperatorModifier,csOperator skipwhite skipempty 391 | syn match csTypeMemberOperator /\%#=1\./ contained nextgroup=csTypeIdentifier skipwhite skipempty 392 | syn match csTypeMemberOperator /\%#=1::/ contained nextgroup=csTypeIdentifier skipwhite skipempty 393 | 394 | syn match csConstructor /\%#=1\K\k*(\@=/ contained contains=csKeywordError nextgroup=csConstructorParameters 395 | syn match csConstructor /\%#=1@\K\k*(\@=/ contained nextgroup=csConstructorParameters 396 | syn region csConstructorParameters matchgroup=csDelimiter start=/\%#=1(/ end=/\%#=1)/ contained contains=csType,csTypeIdentifier,csModifier,csCollectionExpressionOrAttributes nextgroup=csLambdaOperator,csConstructorInheritanceOperator skipwhite skipempty 397 | syn match csConstructorInheritanceOperator /\%#=1:/ contained nextgroup=csMethodConstant skipwhite skipempty 398 | syn keyword csMethodConstant this base contained nextgroup=csMethodConstantParameters skipwhite skipempty 399 | syn region csMethodConstantParameters matchgroup=csDelimiter start=/\%#=1(/ end=/\%#=1)/ contained contains=@csRHS nextgroup=csLambdaOperator skipwhite skipempty 400 | 401 | syn match csAttribute /\%#=1@\=\K\k*/ contained nextgroup=@csOperators skipwhite skipempty 402 | 403 | syn cluster csBlocks contains=cs\a\{-}Block 404 | 405 | syn cluster csExtras contains= 406 | \ ALLBUT, 407 | \ csString,csCharacter,csComment,csXMLTagName,csXMLAttribute,csXMLValue,csDirective,csEscapeSequenceError, 408 | \ cs\a\{-}Comma 409 | 410 | " Highlighting {{{1 411 | hi def link csComment Comment 412 | hi def link csCommentStart csComment 413 | hi def link csCommentEnd csCommentStart 414 | hi def link csTodo Todo 415 | hi def link csDirective PreProc 416 | hi def link csStatement Statement 417 | hi def link csTypeName Typedef 418 | hi def link csInterfaceName csTypeName 419 | hi def link csRecordModifier csStatement 420 | hi def link csGenericParameter csDeclarator 421 | hi def link csTypeInheritanceOperator csOperator 422 | hi def link csTypeConstraintLambdaOperator csOperator 423 | hi def link csTypeInheriteeMemberOperator csMemberOperator 424 | hi def link csTypeConstraint csStatement 425 | hi def link csTypeConstraintModifier csTypeModifier 426 | hi def link csTypeInheriteeKeyword Keyword 427 | hi def link csMethodTypeInheritanceOperator csTypeInheritanceOperator 428 | hi def link csMethodTypeConstraintLambdaOperator csTypeConstraintLambdaOperator 429 | hi def link csMethodTypeInheriteeMemberOperator csTypeInheriteeMemberOperator 430 | hi def link csMethodTypeConstraint csTypeConstraint 431 | hi def link csMethodTypeInheriteeKeyword csTypeInheriteeKeyword 432 | hi def link csMethodTypeConstraintModifier csTypeConstraintModifier 433 | hi def link csTypeVariable csIdentifier 434 | hi def link csEnumName Typedef 435 | hi def link csEnumInheritanceOperator csOperator 436 | hi def link csEnumType csType 437 | hi def link csNamespaceName Typedef 438 | hi def link csNamespaceNameSeparator csOperator 439 | hi def link csDelimiter Delimiter 440 | hi def link csModifier Keyword 441 | hi def link csFunctionPointerModifier csTypeModifier 442 | hi def link csOperatorModifier csModifier 443 | hi def link csOperatorMethod csOperator 444 | hi def link csBooleanOperatorMethod csBoolean 445 | hi def link csConversionMethodKeyword csType 446 | hi def link csIncrementOperator csOperator 447 | hi def link csDecrementOperator csOperator 448 | hi def link csPointerOperator csOperator 449 | hi def link csType Type 450 | hi def link csTypeModifier csOperator 451 | hi def link csTypeIdentifier csIdentifier 452 | hi def link csRHSTypeIdentifier csTypeIdentifier 453 | hi def link csTypeMemberOperator csMemberOperator 454 | hi def link csDeclarator Identifier 455 | hi def link csNotDeclarator csIdentifier 456 | hi def link csDeclaratorMemberOperator csMemberOperator 457 | hi def link csConstructor csDeclarator 458 | hi def link csConstructorInheritanceOperator csOperator 459 | hi def link csDestructorSign csOperator 460 | hi def link csDestructor csConstructor 461 | hi def link csMethodConstant csConstant 462 | hi def link csConstant Constant 463 | hi def link csRHSConstant csConstant 464 | hi def link csIndexerThis csConstant 465 | hi def link csThisModifier csConstant 466 | hi def link csOperator Operator 467 | hi def link csAssignmentOperator csOperator 468 | hi def link csMemberOperator csOperator 469 | hi def link csNullForgivingOperator csOperator 470 | hi def link csLambdaOperator csOperator 471 | hi def link csAccessor csStatement 472 | hi def link csOperatorKeyword Keyword 473 | hi def link csUnaryOperatorKeyword csOperatorKeyword 474 | hi def link csRHSDeclarator csDeclarator 475 | hi def link csRHSIdentifier csIdentifier 476 | hi def link csRHSType csType 477 | hi def link csLINQKeyword Keyword 478 | hi def link csUnaryOperator csOperator 479 | hi def link csNumber Number 480 | hi def link csBoolean Boolean 481 | hi def link csNull Constant 482 | hi def link csCharacter Character 483 | hi def link csCharacterDelimiter csDelimiter 484 | hi def link csString String 485 | hi def link csStringStart csDelimiter 486 | hi def link csStringEnd csStringStart 487 | hi def link csStringInterpolationDelimiter csDelimiter 488 | hi def link csStringInterpolationError Error 489 | hi def link csEscapeSequence SpecialChar 490 | hi def link csEscapeSequenceError Error 491 | hi def link csQuoteEscape csEscapeSequence 492 | hi def link csBraceEscape csEscapeSequence 493 | hi def link csKeywordError Error 494 | hi def link csXMLTagStart Delimiter 495 | hi def link csXMLTagName Special 496 | hi def link csXMLTagEnd csXMLTagStart 497 | hi def link csXMLAttribute Keyword 498 | hi def link csXMLAttributeOperator Operator 499 | hi def link csXMLValue String 500 | hi def link csXMLValueDelimiter csDelimiter 501 | hi def link csPatternType csType 502 | hi def link csPatternTypeIdentifier csTypeIdentifier 503 | hi def link csPatternTypeMemberOperator csMemberOperator 504 | hi def link csPatternDeclarator csDeclarator 505 | hi def link csPatternPropertyMemberOperator csMemberOperator 506 | hi def link csPatternSlice csOperator 507 | hi def link csDeclaratorComma csDelimiter 508 | hi def link csTypeInheriteeComma csDeclaratorComma 509 | hi def link csLINQDeclarator csDeclarator 510 | hi def link csFunctionPointerManaged csModifier 511 | hi def link csPatternListVar csStatement 512 | hi def link csPatternListDeclarator csDeclarator 513 | hi def link csPatternListDeclaratorComma csDeclaratorComma 514 | hi def link csReadonly csUnaryOperatorKeyword 515 | hi def link csPatternPropertyColon csOperator 516 | hi def link csUsingStatic csModifier 517 | " }}}1 518 | 519 | " vim:fdm=marker 520 | --------------------------------------------------------------------------------