" Vim syntax file" Language: C#" Maintainer: Anduin Withers <awithers@anduin.com>" Former Maintainer: Johannes Zellner <johannes@zellner.org>" Last Change: Sun Apr 30 19:26:18 PDT 2006" Filenames: *.cs" $Id: cs.vim,v 1.4 2006/05/03 21:20:02 vimboss Exp $"" REFERENCES:" [1] ECMA TC39: C# Language Specification (WD13Oct01.doc)if exists("b:current_syntax") finishendiflet s:cs_cpo_save = &cposet cpo&vim" typesyn keyword csType bool byte char decimal double float int long object sbyte short string uint ulong ushort void" storagesyn keyword csStorage class delegate enum interface namespace struct" repeat / condition / labelsyn keyword csRepeat break continue do for foreach goto return whilesyn keyword csConditional else if switchsyn 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*:\([^:]\)\@=+" modifiersyn keyword csModifier abstract const extern internal override private protected public readonly sealed static virtual volatile" constantsyn keyword csConstant false null true" exceptionsyn 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 add remove value" TODO:syn keyword csUnspecifiedKeyword explicit implicit" Contextual Keywordssyn match csContextualStatement /\<yield[[:space:]\n]\+\(return\|break\)/me=s+5syn match csContextualStatement /\<partial[[:space:]\n]\+\(class\|struct\|interface\)/me=s+7syn match csContextualStatement /\<\(get\|set\)[[:space:]\n]*{/me=s+3syn match csContextualStatement /\<where\>[^:]\+:/me=s+5" Comments"" PROVIDES: @csCommentHook"" TODO: include strings ?"syn keyword csTodo contained TODO FIXME XXX NOTEsyn region csComment start="/\*" end="\*/" contains=@csCommentHook,csTodo,@Spellsyn match csComment "//.*$" contains=@csCommentHook,csTodo,@Spell" xml markup inside '///' commentssyn cluster xmlRegionHook add=csXmlCommentLeadersyn cluster xmlCdataHook add=csXmlCommentLeadersyn cluster xmlStartTagHook add=csXmlCommentLeadersyn keyword csXmlTag contained Libraries Packages Types Excluded ExcludedTypeName ExcludedLibraryNamesyn keyword csXmlTag contained ExcludedBucketName TypeExcluded Type TypeKind TypeSignature AssemblyInfosyn keyword csXmlTag contained AssemblyName AssemblyPublicKey AssemblyVersion AssemblyCulture Basesyn keyword csXmlTag contained BaseTypeName Interfaces Interface InterfaceName Attributes Attributesyn keyword csXmlTag contained AttributeName Members Member MemberSignature MemberType MemberValuesyn keyword csXmlTag contained ReturnValue ReturnType Parameters Parameter MemberOfPackagesyn keyword csXmlTag contained ThreadingSafetyStatement Docs devdoc example overload remarks returns summarysyn keyword csXmlTag contained threadsafe value internalonly nodoc exception param permission platnotesyn keyword csXmlTag contained seealso b c i pre sub sup block code note paramref see subscript superscriptsyn keyword csXmlTag contained list listheader item term description altcompliant altmembersyn cluster xmlTagHook add=csXmlTagsyn match csXmlCommentLeader +\/\/\/+ containedsyn match csXmlComment +\/\/\/.*$+ contains=csXmlCommentLeader,@csXmlsyntax include @csXml <sfile>:p:h/xml.vimhi def link xmlRegion Comment" [1] 9.5 Pre-processing directivessyn region csPreCondit \ start="^\s*#\s*\(define\|undef\|if\|elif\|else\|endif\|line\|error\|warning\)" \ skip="\\$" end="$" contains=csComment keependsyn region csRegion matchgroup=csPreCondit start="^\s*#\s*region.*$" \ end="^\s*#\s*endregion" transparent fold contains=TOP" Strings and constantssyn match csSpecialError contained "\\."syn match csSpecialCharError contained "[^']"" [1] 9.4.4.4 Character literalssyn match csSpecialChar contained +\\["\\'0abfnrtvx]+" unicode characterssyn match csUnicodeNumber +\\\(u\x\{4}\|U\x\{8}\)+ contained contains=csUnicodeSpecifiersyn match csUnicodeSpecifier +\\[uU]+ containedsyn region csVerbatimString start=+@"+ end=+"+ end=+$+ skip=+""+ contains=csVerbatimSpec,@Spellsyn match csVerbatimSpec +@"+he=s+1 containedsyn region csString start=+"+ end=+"+ end=+$+ contains=csSpecialChar,csSpecialError,csUnicodeNumber,@Spellsyn match csCharacter "'[^']*'" contains=csSpecialChar,csSpecialCharErrorsyn match csCharacter "'\\''" contains=csSpecialCharsyn 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 Typehi def link csStorage StorageClasshi def link csRepeat Repeathi def link csConditional Conditionalhi def link csLabel Labelhi def link csModifier StorageClasshi def link csConstant Constanthi def link csException Exceptionhi def link csUnspecifiedStatement Statementhi def link csUnsupportedStatement Statementhi def link csUnspecifiedKeyword Keywordhi def link csContextualStatement Statementhi def link csOperatorError Errorhi def link csTodo Todohi def link csComment Commenthi def link csSpecialError Errorhi def link csSpecialCharError Errorhi def link csString Stringhi def link csVerbatimString Stringhi def link csVerbatimSpec SpecialCharhi def link csPreCondit PreCondithi def link csCharacter Characterhi def link csSpecialChar SpecialCharhi def link csNumber Numberhi def link csUnicodeNumber SpecialCharhi def link csUnicodeSpecifier SpecialChar" xml markuphi def link csXmlCommentLeader Commenthi def link csXmlComment Commenthi def link csXmlTag Statementlet b:current_syntax = "cs"let &cpo = s:cs_cpo_saveunlet s:cs_cpo_save" vim: ts=8
" Vim syntax file
" Language: C#
" Maintainer: Anduin Withers <awithers@anduin.com>
" Former Maintainer: Johannes Zellner <johannes@zellner.org>
" Last Change: Sun Apr 30 19:26:18 PDT 2006
" Filenames: *.cs
" $Id: cs.vim,v 1.4 2006/05/03 21:20:02 vimboss Exp $
"
" 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
" repeat / 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 add remove value
" TODO:
syn keyword csUnspecifiedKeyword explicit implicit
" Contextual Keywords
syn match csContextualStatement /\<yield[[:space:]\n]\+\(return\|break\)/me=s+5
syn match csContextualStatement /\<partial[[:space:]\n]\+\(class\|struct\|interface\)/me=s+7
syn match csContextualStatement /\<\(get\|set\)[[:space:]\n]*{/me=s+3
syn match csContextualStatement /\<where\>[^:]\+:/me=s+5
" Comments
"
" PROVIDES: @csCommentHook
"
" TODO: include strings ?
"
syn keyword csTodo contained TODO FIXME XXX NOTE
syn region csComment start="/\*" end="\*/" contains=@csCommentHook,csTodo,@Spell
syn match csComment "//.*$" contains=@csCommentHook,csTodo,@Spell
" 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\)"
\ skip="\\$" end="$" contains=csComment keepend
syn region csRegion matchgroup=csPreCondit start="^\s*#\s*region.*$"
\ end="^\s*#\s*endregion" transparent fold contains=TOP
" 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=+$+ skip=+""+ contains=csVerbatimSpec,@Spell
syn match csVerbatimSpec +@"+he=s+1 contained
syn region csString start=+"+ end=+"+ end=+$+ contains=csSpecialChar,csSpecialError,csUnicodeNumber,@Spell
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 csContextualStatement Statement
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