0
0
mirror of https://github.com/vim/vim.git synced 2025-07-04 23:07:33 -04:00
vim/runtime/syntax/cs.vim

165 lines
6.8 KiB
VimL
Raw Normal View History

2004-06-13 20:20:40 +00:00
" Vim syntax file
2018-05-06 17:57:30 +02:00
" Language: C#
" Maintainer: Nick Jensen <nickspoon@gmail.com>
" Former Maintainer: Anduin Withers <awithers@anduin.com>
2006-05-03 21:26:49 +00:00
" Former Maintainer: Johannes Zellner <johannes@zellner.org>
2018-05-06 17:57:30 +02:00
" Last Change: 2018-05-02
" Filenames: *.cs
" License: Vim (see :h license)
" Repository: https://github.com/nickspoons/vim-cs
2004-06-13 20:20:40 +00:00
"
" 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
2018-05-06 17:57:30 +02:00
syn keyword csType bool byte char decimal double float int long object sbyte short string T uint ulong ushort var void dynamic
syn keyword csStorage delegate enum interface namespace struct
2004-06-13 20:20:40 +00:00
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*:\([^:]\)\@=+
syn keyword csModifier abstract const extern internal override private protected public readonly sealed static virtual volatile
syn keyword csConstant false null true
2018-05-06 17:57:30 +02:00
syn keyword csException try catch finally throw when
syn keyword csLinq ascending by descending equals from group in into join let on orderby select where
syn keyword csAsync async await
2004-06-13 20:20:40 +00:00
2018-05-06 17:57:30 +02:00
syn keyword csUnspecifiedStatement as base checked event fixed get in is lock nameof operator out params ref set sizeof stackalloc this typeof unchecked unsafe using
2006-05-03 21:26:49 +00:00
syn keyword csUnsupportedStatement add remove value
2004-06-13 20:20:40 +00:00
syn keyword csUnspecifiedKeyword explicit implicit
2006-05-03 21:26:49 +00:00
" 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
2004-06-13 20:20:40 +00:00
" Comments
"
" PROVIDES: @csCommentHook
"
" TODO: include strings ?
"
2018-05-06 17:57:30 +02:00
syn keyword csTodo contained TODO FIXME XXX NOTE HACK
2006-04-25 22:13:59 +00:00
syn region csComment start="/\*" end="\*/" contains=@csCommentHook,csTodo,@Spell
syn match csComment "//.*$" contains=@csCommentHook,csTodo,@Spell
2004-06-13 20:20:40 +00:00
" 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
2010-01-06 20:54:52 +01:00
syn match csXmlComment +\/\/\/.*$+ contains=csXmlCommentLeader,@csXml,@Spell
syntax include @csXml syntax/xml.vim
2004-06-13 20:20:40 +00:00
hi def link xmlRegion Comment
" [1] 9.5 Pre-processing directives
syn region csPreCondit
2006-05-03 21:26:49 +00:00
\ start="^\s*#\s*\(define\|undef\|if\|elif\|else\|endif\|line\|error\|warning\)"
2004-06-13 20:20:40 +00:00
\ skip="\\$" end="$" contains=csComment keepend
2006-05-03 21:26:49 +00:00
syn region csRegion matchgroup=csPreCondit start="^\s*#\s*region.*$"
\ end="^\s*#\s*endregion" transparent fold contains=TOP
2018-05-06 17:57:30 +02:00
syn region csSummary start="^\s*/// <summary" end="^\(\s*///\)\@!" transparent fold keepend
2004-06-13 20:20:40 +00:00
2018-05-06 17:57:30 +02:00
syn region csClassType start="\(@\)\@<!class\>"hs=s+6 end="[:\n{]"he=e-1 contains=csClass
syn region csNewType start="\(@\)\@<!new\>"hs=s+4 end="[\(\<{\[]"he=e-1 contains=csNew contains=csNewType
syn region csIsType start="\v (is|as) "hs=s+4 end="\v[A-Za-z0-9]+" oneline contains=csIsAs
syn keyword csNew new contained
syn keyword csClass class contained
syn keyword csIsAs is as
2004-06-13 20:20:40 +00:00
" 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
2010-01-06 20:54:52 +01:00
syn region csVerbatimString start=+@"+ end=+"+ skip=+""+ contains=csVerbatimSpec,@Spell
2004-06-13 20:20:40 +00:00
syn match csVerbatimSpec +@"+he=s+1 contained
2006-04-25 22:13:59 +00:00
syn region csString start=+"+ end=+"+ end=+$+ contains=csSpecialChar,csSpecialError,csUnicodeNumber,@Spell
2004-06-13 20:20:40 +00:00
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
2018-05-06 17:57:30 +02:00
hi def link csNewType Type
hi def link csClassType Type
hi def link csIsType Type
2004-06-13 20:20:40 +00:00
hi def link csStorage StorageClass
2018-05-06 17:57:30 +02:00
hi def link csClass StorageClass
2004-06-13 20:20:40 +00:00
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
2018-05-06 17:57:30 +02:00
hi def link csNew Statement
hi def link csLinq Statement
hi def link csIsAs Keyword
hi def link csAsync Keyword
2006-05-03 21:26:49 +00:00
hi def link csContextualStatement Statement
2004-06-13 20:20:40 +00:00
hi def link csOperatorError Error
2018-05-06 17:57:30 +02:00
hi def link csInterfaceDeclaration Include
2004-06-13 20:20:40 +00:00
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