diff options
Diffstat (limited to 'runtime/syntax/cs.vim')
-rw-r--r-- | runtime/syntax/cs.vim | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/runtime/syntax/cs.vim b/runtime/syntax/cs.vim new file mode 100644 index 000000000..99844b965 --- /dev/null +++ b/runtime/syntax/cs.vim @@ -0,0 +1,145 @@ +" Vim syntax file +" Language: C# +" Maintainer: Johannes Zellner <johannes@zellner.org> +" Last Change: Tue, 09 Mar 2004 14:32:13 CET +" Filenames: *.cs +" $Id$ +" +" REFERENCES: +" [1] ECMA TC39: C# Language Specification (WD13Oct01.doc) + +if exists("b:current_syntax") + finish +endif + +let s:cs_cpo_save = &cpo +set cpo&vim + + +" type +syn keyword csType bool byte char decimal double float int long object sbyte short string uint ulong ushort void +" storage +syn keyword csStorage class delegate enum interface namespace struct +" repeate / condition / label +syn keyword csRepeat break continue do for foreach goto return while +syn keyword csConditional else if switch +syn keyword csLabel case default +" there's no :: operator in C# +syn match csOperatorError display +::+ +" user labels (see [1] 8.6 Statements) +syn match csLabel display +^\s*\I\i*\s*:\([^:]\)\@=+ +" modifier +syn keyword csModifier abstract const extern internal override private protected public readonly sealed static virtual volatile +" constant +syn keyword csConstant false null true +" exception +syn keyword csException try catch finally throw + +" TODO: +syn keyword csUnspecifiedStatement as base checked event fixed in is lock new operator out params ref sizeof stackalloc this typeof unchecked unsafe using +" TODO: +syn keyword csUnsupportedStatement get set add remove value +" TODO: +syn keyword csUnspecifiedKeyword explicit implicit + + + +" Comments +" +" PROVIDES: @csCommentHook +" +" TODO: include strings ? +" +syn keyword csTodo contained TODO FIXME XXX NOTE +syn region csComment start="/\*" end="\*/" contains=@csCommentHook,csTodo +syn match csComment "//.*$" contains=@csCommentHook,csTodo + +" xml markup inside '///' comments +syn cluster xmlRegionHook add=csXmlCommentLeader +syn cluster xmlCdataHook add=csXmlCommentLeader +syn cluster xmlStartTagHook add=csXmlCommentLeader +syn keyword csXmlTag contained Libraries Packages Types Excluded ExcludedTypeName ExcludedLibraryName +syn keyword csXmlTag contained ExcludedBucketName TypeExcluded Type TypeKind TypeSignature AssemblyInfo +syn keyword csXmlTag contained AssemblyName AssemblyPublicKey AssemblyVersion AssemblyCulture Base +syn keyword csXmlTag contained BaseTypeName Interfaces Interface InterfaceName Attributes Attribute +syn keyword csXmlTag contained AttributeName Members Member MemberSignature MemberType MemberValue +syn keyword csXmlTag contained ReturnValue ReturnType Parameters Parameter MemberOfPackage +syn keyword csXmlTag contained ThreadingSafetyStatement Docs devdoc example overload remarks returns summary +syn keyword csXmlTag contained threadsafe value internalonly nodoc exception param permission platnote +syn keyword csXmlTag contained seealso b c i pre sub sup block code note paramref see subscript superscript +syn keyword csXmlTag contained list listheader item term description altcompliant altmember + +syn cluster xmlTagHook add=csXmlTag + +syn match csXmlCommentLeader +\/\/\/+ contained +syn match csXmlComment +\/\/\/.*$+ contains=csXmlCommentLeader,@csXml +syntax include @csXml <sfile>:p:h/xml.vim +hi def link xmlRegion Comment + + +" [1] 9.5 Pre-processing directives +syn region csPreCondit + \ start="^\s*#\s*\(define\|undef\|if\|elif\|else\|endif\|line\|error\|warning\|region\|endregion\)" + \ skip="\\$" end="$" contains=csComment keepend + + + +" Strings and constants +syn match csSpecialError contained "\\." +syn match csSpecialCharError contained "[^']" +" [1] 9.4.4.4 Character literals +syn match csSpecialChar contained +\\["\\'0abfnrtvx]+ +" unicode characters +syn match csUnicodeNumber +\\\(u\x\{4}\|U\x\{8}\)+ contained contains=csUnicodeSpecifier +syn match csUnicodeSpecifier +\\[uU]+ contained +syn region csVerbatimString start=+@"+ end=+"+ end=+$+ contains=csVerbatimSpec +syn match csVerbatimSpec +@"+he=s+1 contained +syn region csString start=+"+ end=+"+ end=+$+ contains=csSpecialChar,csSpecialError,csUnicodeNumber +syn match csCharacter "'[^']*'" contains=csSpecialChar,csSpecialCharError +syn match csCharacter "'\\''" contains=csSpecialChar +syn match csCharacter "'[^\\]'" +syn match csNumber "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>" +syn match csNumber "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\=" +syn match csNumber "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>" +syn match csNumber "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>" + +" The default highlighting. +hi def link csType Type +hi def link csStorage StorageClass +hi def link csRepeat Repeat +hi def link csConditional Conditional +hi def link csLabel Label +hi def link csModifier StorageClass +hi def link csConstant Constant +hi def link csException Exception +hi def link csUnspecifiedStatement Statement +hi def link csUnsupportedStatement Statement +hi def link csUnspecifiedKeyword Keyword +hi def link csOperatorError Error + +hi def link csTodo Todo +hi def link csComment Comment + +hi def link csSpecialError Error +hi def link csSpecialCharError Error +hi def link csString String +hi def link csVerbatimString String +hi def link csVerbatimSpec SpecialChar +hi def link csPreCondit PreCondit +hi def link csCharacter Character +hi def link csSpecialChar SpecialChar +hi def link csNumber Number +hi def link csUnicodeNumber SpecialChar +hi def link csUnicodeSpecifier SpecialChar + +" xml markup +hi def link csXmlCommentLeader Comment +hi def link csXmlComment Comment +hi def link csXmlTag Statement + +let b:current_syntax = "cs" + +let &cpo = s:cs_cpo_save +unlet s:cs_cpo_save + +" vim: ts=8 |