summaryrefslogtreecommitdiff
path: root/runtime/syntax/cs.vim
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/syntax/cs.vim')
-rw-r--r--runtime/syntax/cs.vim50
1 files changed, 30 insertions, 20 deletions
diff --git a/runtime/syntax/cs.vim b/runtime/syntax/cs.vim
index 2ba629f92..111bc85df 100644
--- a/runtime/syntax/cs.vim
+++ b/runtime/syntax/cs.vim
@@ -1,10 +1,12 @@
" Vim syntax file
-" Language: C#
-" Maintainer: Anduin Withers <awithers@anduin.com>
+" Language: C#
+" Maintainer: Nick Jensen <nickspoon@gmail.com>
+" Former Maintainer: Anduin Withers <awithers@anduin.com>
" Former Maintainer: Johannes Zellner <johannes@zellner.org>
-" Last Change: Fri Aug 14 13:56:37 PDT 2009
-" Filenames: *.cs
-" $Id: cs.vim,v 1.4 2006/05/03 21:20:02 vimboss Exp $
+" Last Change: 2018-05-02
+" Filenames: *.cs
+" License: Vim (see :h license)
+" Repository: https://github.com/nickspoons/vim-cs
"
" REFERENCES:
" [1] ECMA TC39: C# Language Specification (WD13Oct01.doc)
@@ -17,11 +19,8 @@ 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 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
syn keyword csRepeat break continue do for foreach goto return while
syn keyword csConditional else if switch
syn keyword csLabel case default
@@ -29,21 +28,16 @@ syn keyword csLabel case default
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
+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
-" 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 csUnspecifiedStatement as base checked event fixed get in is lock nameof operator out params ref set sizeof stackalloc this typeof unchecked unsafe using
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
@@ -56,7 +50,7 @@ syn match csContextualStatement /\<where\>[^:]\+:/me=s+5
"
" TODO: include strings ?
"
-syn keyword csTodo contained TODO FIXME XXX NOTE
+syn keyword csTodo contained TODO FIXME XXX NOTE HACK
syn region csComment start="/\*" end="\*/" contains=@csCommentHook,csTodo,@Spell
syn match csComment "//.*$" contains=@csCommentHook,csTodo,@Spell
@@ -89,8 +83,15 @@ syn region csPreCondit
\ skip="\\$" end="$" contains=csComment keepend
syn region csRegion matchgroup=csPreCondit start="^\s*#\s*region.*$"
\ end="^\s*#\s*endregion" transparent fold contains=TOP
+syn region csSummary start="^\s*/// <summary" end="^\(\s*///\)\@!" transparent fold keepend
+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
" Strings and constants
syn match csSpecialError contained "\\."
@@ -113,7 +114,11 @@ syn match csNumber "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
" The default highlighting.
hi def link csType Type
+hi def link csNewType Type
+hi def link csClassType Type
+hi def link csIsType Type
hi def link csStorage StorageClass
+hi def link csClass StorageClass
hi def link csRepeat Repeat
hi def link csConditional Conditional
hi def link csLabel Label
@@ -123,8 +128,13 @@ hi def link csException Exception
hi def link csUnspecifiedStatement Statement
hi def link csUnsupportedStatement Statement
hi def link csUnspecifiedKeyword Keyword
+hi def link csNew Statement
+hi def link csLinq Statement
+hi def link csIsAs Keyword
+hi def link csAsync Keyword
hi def link csContextualStatement Statement
hi def link csOperatorError Error
+hi def link csInterfaceDeclaration Include
hi def link csTodo Todo
hi def link csComment Comment