diff runtime/syntax/cs.vim @ 0:76efa0be13f1

Initial revision
author atsuki
date Sat, 10 Nov 2007 15:07:22 +0900
parents
children e170173ecb68
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/runtime/syntax/cs.vim	Sat Nov 10 15:07:22 2007 +0900
@@ -0,0 +1,154 @@
+" 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$
+"
+" 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