vim-polyglot/syntax/vbnet.vim
2019-03-04 09:28:35 +01:00

436 lines
33 KiB
VimL

if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'vbnet') != -1
finish
endif
" Vim syntax file
" Language: VB.NET
" Maintainer: Tim Pope <vim@rebelongto.us>
" Last Change: 2006 Apr 28
" Filenames: *.vb
" $Id: vbnet.vim,v 1.7 2006/04/28 06:00:29 tpope Exp $
" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
if version < 600
syntax clear
elseif exists("b:current_syntax")
finish
endif
" 2. Lexical Grammar
syn case ignore
syn sync linebreaks=2
" 2.1.4 Comments
syn keyword vbTodo contained TODO FIXME XXX NOTE
syn region vbnetComment start="\<REM\>" end="$" contains=vbnetTodo
syn region vbnetComment start="'" end="$" contains=vbnetTodo
syn cluster vbnetComments contains=vbnetComment,vbnetXmlComment
" 2.3 Keywords
syn keyword vbnetKeywordError EndIf GoSub Let Variant Wend
" Every possible keyword (Version 8). Used for certain errors below
syn keyword vbnetKeywordError AddHandler AddressOf Alias And AndAlso As Boolean ByRef Byte ByVal Call Case Catch CBool CByte CChar CDate CDec CDbl Char CInt Class CLng CObj Const Continue CSByte CShort CSng CStr CType CUInt CULng CUShort Date Decimal Declare Default Delegate Dim DirectCast Do Double Each Else ElseIf End EndIf Enum Erase Error Event Exit False Finally For Friend Function Get GetType Global GoSub GoTo Handles If Implements Imports In Inherits Integer Interface Is IsNot Let Lib Like Long Loop Me Mod Module MustInherit MustOverride MyBase MyClass Namespace Narrowing New Next Not Nothing NotInheritable NotOverridable Object Of On Operator Option Optional Or OrElse Overloads Overridable Overrides ParamArray Partial Private Property Protected Public RaiseEvent ReadOnly ReDim RemoveHandler Resume Return SByte Select Set Shadows Shared Short Single Static Step Stop String Structure Sub SyncLock Then Throw To True Try TryCast TypeOf Variant Wend UInteger ULong UShort Using When While Widening With WithEvents WriteOnly contained
syn match vbnetIdentifier "\[\h\w*\]"
syn cluster vbnetStrict contains=vbnetIdentifier,vbnetKeywordError
" 2.4 Literals
syn keyword vbnetBoolean False True
syn match vbnetNumber "[+-]\=\(&O[0-7]*\|&H\x\+\|\<\d\+\)[SIL]\=\>"
syn match vbnetNumber "[+-]\=\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[FRD]\=\>"
syn match vbnetNumber "[+-]\=\<\d\+[eE][-+]\=\d\+[FRD]\=\>"
syn match vbnetNumber "[+-]\=\<\d\+\([eE][-+]\=\d\+\)\=[FRD]\>"
syn region vbnetString start=+"+ end=+"+ end=+$+ skip=+""+
syn match vbnetCharacter +"\([^"]\|""\)"c+
" 2.4.6 Date literals
syn match vbnetDate "1\=\d\([-/]\)[123]\=\d\1\d\{3,4\}" contained
" For simplicity, require at least an hour and a minute in a time, and require
" minutes and seconds to be two digits
syn match vbnetDate "\<[12]\=\d:\d\d\(:\d\d\)\=\s*\([AP]M\)\=\>" contained
syn match vbnetDate "\<_$" contained
" Avoid matching #directives
syn region vbnetDateGroup matchgroup=vbnetDate start="\(\S\s*\)\@<=#" skip="\<_$" end="\(\S\s*\)\@<=#" end="$" contains=vbnetDate,@vbnetStrict
syn keyword vbnetConstant Nothing
syn cluster vbnetLiterals contains=vbnetBoolean,vbnetNumber,vbnetString,vbnetCharacter,vbnetDateGroup,vbnetConstant
" 3. Preprocessing Directives
syn region vbnetPreCondit
\ start="^\s*#\s*\(If\|ElseIf\|Else\|End\s\+If\)\>" skip="\<_$"
\ end="$" contains=@vbnetComments keepend
"syn match vbnetPreCondit "\(\s*#\s*\(Else\)\=If\>.*\)\@<=\<Then\>"
syn region vbnetDefine start="^\s*#\s*Const\>" skip="\<_$" end="$"
\ contains=@vbnetComments keepend
syn region vbnetInclude
\ start="^\s*#\s*\(ExternalSource\|End\s\+ExternalSource\)\>"
\ skip="\<_$" end="$" contains=@vbnetComments keepend
syn region vbnetRegion matchgroup=vbnetPreProc start="^\s*#\s*Region\>" end="^\s*#\s*End\s\+Region\>" fold contains=TOP
syn cluster vbnetPreProc contains=vbnetPreCondit,vbnetDefine,vbnetInclude,vbnetRegion
" 4. General Concepts
syn keyword vbnetTypeAccess Public Private Protected Friend contained
syn match vbnetAccessModifier "\<\(Friend\|Private\|Protected\|Protected\s\+\Friend\|Public\)\>"
" This is from section 9 but must be here to lower the priority
syn match vbnetModifier "\<\(Shared\|Static\|ReadOnly\|WithEvents\|Shadows\)\>"
" 5. Attributes
"syn match vbnetAttribute "<\(\s_\n\|[^<=>]\)\{-1,}>"
syn match vbnetAttribute "<\s*\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*\%(\s*([^()]*)\)\=\(\s*,\s*\%(_\n\s*\)\=\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*\%(\s*([^()]*)\)\=\)\{-}\s*>"
" 6. Source Files and Namespaces
syn keyword vbnetImports Imports
syn match vbnetOption "^\s*Option\s\+\(\(Explicit\|Strict\)\(\s\+On\|\s\+Off\)\=\|Compare\s\+\(Binary\|Text\)\)\s*$"
if ! exists("vbnet_no_code_folds")
syn region vbnetNamespaceBlock matchgroup=vbnetStorage start="\(\w\s*\)\@<!Namespace" end="\<End\s\+\Namespace\>" contains=TOP fold
else
syn region vbnetNamespaceBlock matchgroup=vbnetStorage start="\(\w\s*\)\@<!Namespace" end="\<End\s\+\Namespace\>" contains=TOP
endif
" 7. Types
" 7.2 Interface Implementation
syn keyword vbnetTypeImplementsKeyword Implements contained
syn match vbnetTypeImplementsClause "\(^\|:\)\s*Implements\s\+\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*\(\s*,\s*\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*\)*" contains=vbnetTypeImplementsKeyword,@vbnetStrict contained skipwhite skipnl nextgroup=@vbnetTypeImplements
syn match vbnetTypeImplementsComment "\s*\%('\|\<REM\>\).*$" contains=@vbnetComments,@vnetStrict contained skipwhite skipempty nextgroup=@vbnetTypeImplements
syn match vbnetTypeImplementsPreProc "^\s*#.*$" contains=@vbnetPreProc,@vbnetStrict contained skipwhite skipempty nextgroup=@vbnetTypeImplements
syn cluster vbnetTypeImplements contains=vbnetTypeImplementsClause,vbnetTypeImplementsComment,vbnetTypeImplementsPreProc
" 7.3 Primitive Types
syn match vbnetPossibleType "\%(\<\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*" contained skipwhite nextgroup=vbnetGeneric
syn keyword vbnetBuiltinType Boolean Byte Char Date Decimal Double Single Integer Long Object Short String skipwhite nextgroup=vbnetGeneric
syn match vbnetSystemType "\<System\.\(Boolean\|Byte\|SByte\|Char\|Decimal\|Double\|Single\|Int32\|UInt32\|Int64\|UInt64\|Int16\|UInt16\|Object\)\>" skipwhite nextgroup=vbnetGeneric
syn cluster vbnetType contains=vbnetBuiltinType,vbnetSystemType
syn cluster vbnetAnyType contains=@vbnetType,vbnetPossibleType
syn match vbnetTypeSpecifier "[a-zA-Z0-9]\@<=[\$%&#]"
syn match vbnetTypeSpecifier "[a-zA-Z0-9]\@<=!\([^a-zA-Z0-9]\|$\)"me=s+1
" 7.4 Enumerations
syn keyword vbnetEnumWords Shadows Enum contained
syn cluster vbnetEnum contains=vbnetTypeAccess,vbnetEnumWords,vbnetAsClause
syn match vbnetEnumDeclaration "\<\(\w\+\s\+\)*\(\<End\>.*\)\@<!Enum\s\+\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*\(\s\+As\s\+\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*\)\=" contains=@vbnetEnum,@vbnetStrict containedin=vbnetEnumBlock
syn match vbnetTypeEnd "\<End\s\+Enum\>" containedin=vbnetEnumBlock
" 7.5 Classes
syn keyword vbnetClassWords MustInherit NotInheritable Class contained
syn cluster vbnetClass contains=vbnetTypeAccess,vbnetClassWords
syn match vbnetClassGeneric "\%(\w\s*\)\@<=(\s*Of\s\+[^)]*)" contained contains=vbnetGeneric,@vbnetStrict skipwhite skipempty nextgroup=@vbnetClassBase,@vbnetTypeImplements
syn match vbnetClassDeclaration "\<\(\w\+\s\+\)*\(\<End\>.*\)\@<!Class\s\+\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*" contains=@vbnetClass,@vbnetStrict containedin=vbnetClassBlock skipwhite skipempty nextgroup=vbnetClassGeneric,@vbnetClassBase,@vbnetTypeImplements
syn match vbnetTypeEnd "\<End\s\+Class\>" containedin=vbnetClassBlock
" 7.5.1 Class Base Specification
syn keyword vbnetInheritsKeyword Inherits contained
syn match vbnetClassBase "\(^\|:\)\s*Inherits\s\+\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*" contains=vbnetInheritsKeyword,@vbnetType,@vbnetStrict contained skipwhite skipempty nextgroup=@vbnetTypeImplements
syn match vbnetClassBaseComment "\s*\%('\|\<REM\>\).*$" contains=@vbnetComments,@vbnetStrict contained skipwhite skipempty nextgroup=@vbnetClassBase,@vbnetTypeImplements
syn match vbnetClassBasePreProc "^\s*#.*$" contains=@vbnetPreProc,@vbnetStrict contained skipwhite skipempty nextgroup=@vbnetClassBase,@vbnetTypeImplements
syn cluster vbnetClassBase contains=vbnetClassBase,vbnetClassBaseComment,vbnetClassBasePreProc
" 7.6 Structures
syn keyword vbnetStructureWords Implements Structure contained
syn cluster vbnetStructure contains=vbnetTypeAccess,vbnetStructureWords
syn match vbnetStructureDeclaration "\<\(\w\+\s\+\)*\(\<End\>.*\)\@<!Structure\s\+\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*" contains=@vbnetStructure,@vbnetStrict containedin=vbnetStructureBlock skipwhite skipempty nextgroup=@vbnetTypeImplements
syn match vbnetTypeEnd "\<End\s\+Structure\>" containedin=vbnetStructureBlock
" 7.7 Modules
syn keyword vbnetModuleWords Module contained
syn cluster vbnetModule contains=vbnetTypeAccess,vbnetModuleWords
syn match vbnetModuleDeclaration "\<\(\w\+\s\+\)*\(\<End\>.*\)\@<!Module\s\+\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*" contains=@vbnetModule,@vbnetStrict containedin=vbnetModuleBlock
syn match vbnetTypeEnd "\<End\s\+Module\>" containedin=vbnetModuleBlock
" 7.8 Interfaces
syn keyword vbnetInterfaceWords Shadows Inherits Interface contained
syn cluster vbnetInterface contains=vbnetTypeAccess,vbnetInterfaceWords
syn match vbnetInterfaceDeclaration "\<\(\w\+\s\+\)*\(\<End\>.*\)\@<!Interface\s\+\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*" contains=@vbnetInterface,@vbnetStrict containedin=vbnetInterfaceBlock skipwhite skipempty nextgroup=@vbnetInterfaceBase
syn match vbnetTypeEnd "\<End\s\+Interface\>" containedin=vbnetInterfaceBlock
" 7.8.1 Interface Inheritance
syn match vbnetInterfaceBase "\(^\|:\)\s*Inherits\s\+\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*\(\s*,\s*\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*\)*" contains=vbnetInheritsKeyword,@vbnetStrict contained skipwhite skipempty nextgroup=@vbnetInterfaceBase
syn match vbnetInterfaceBaseComment "\s*\%('\|\<REM\>\).*$" contains=@vbnetComments,@vbnetStrict contained skipwhite skipempty nextgroup=@vbnetInterfaceBase
syn match vbnetInterfaceBasePreProc "^\s*#.*$" contains=@vbnetPreProc,@vbnetStrict contained skipwhite skipempty nextgroup=@vbnetInterfaceBase
syn cluster vbnetInterfaceBase contains=vbnetInterfaceBase,vbnetInterfaceBaseComment,vbnetInterfaceBasePreProc
" 7.10 Delegates
syn keyword vbnetStorage Delegate
" 9. Type Members
" 9.1 Interface Method Implementation
syn keyword vbnetImplementsKeyword Implements contained
syn match vbnetImplementsClause "\<Implements\s\+\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*\(\s*,\s*\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*\)*" contains=vbnetImplementsKeyword,@vbnetStrict contained
" 9.2 Methods
syn keyword vbnetProcedureWords Public Private Protected Friend Shadows Shared Overridable NotOverridable MustOverride Overrides Overloads Delegate contained
syn keyword vbnetSubWords Sub New contained
syn keyword vbnetAsError As contained
syn cluster vbnetSub contains=vbnetProcedureWords,vbnetSubWords,vbnetParameter
syn keyword vbnetFunctionWords Function contained
syn cluster vbnetFunction contains=vbnetProcedureWords,vbnetFunctionWords,vbnetParameter
syn region vbnetSubArguments start="(" skip="([^)]*)\|\<_$" end=")" end="$" contains=vbnetParameter,vbnetAsClause,@vbnetLiterals,@vbnetStrict keepend skipwhite nextgroup=@vbnetHandlesOrImplements,vbnetAsError contained
syn match vbnetSubDeclaration "\<\(\w\+\s\+\)*\(\<\(End\|Exit\)\>.*\)\@<!\<Sub\>\s\+\%(\h\w*\>\|\[\h\w*\]\)" contains=@vbnetSub,@vbnetStrict containedin=vbnetSubBlock skipwhite nextgroup=vbnetSubArguments,@vbnetHandlesOrImplements
syn match vbnetProcedureEnd "\<End\s\+Sub\>" containedin=vbnetSubBlock
syn region vbnetFunctionArguments start="(" skip="([^)]*)\|\<_$" end=")" end="$" contains=vbnetParameter,vbnetAsClause,@vbnetLiterals,@vbnetStrict keepend skipwhite nextgroup=vbnetFunctionReturn,@vbnetHandlesOrImplements contained
syn match vbnetFunctionReturn "\<As\s\+[][(){}A-Za-z0-9_.]\+" contains=vbnetAsClause,@vbnetStrict skipwhite nextgroup=@vbnetHandlesOrImplements contained
syn match vbnetFunctionDeclaration "\<\(\w\+\s\+\)*\(\<\(End\|Exit\)\>.*\)\@<!\<Function\>\s\+\%(\h\w*\>\|\[\h\w*\]\)" contains=@vbnetFunction,@vbnetStrict containedin=vbnetFunctionBlock skipwhite nextgroup=vbnetFunctionArguments,vbnetFunctionReturn,@vbnetHandlesOrImplements
syn match vbnetProcedureEnd "\<End\s\+Function\>" containedin=vbnetFunctionBlock
" 9.2.2 External Method Declarations
syn keyword vbnetExternalProcedureWords Declare Ansi Unicode Auto Lib Alias contained
syn region vbnetExternalSubArguments start="(" skip="([^)]*)\|\<_$" end=")" end="$" contains=vbnetParameter,vbnetAsClause,@vbnetLiterals,@vbnetStrict keepend contained
syn match vbnetExternalSubDeclaration #\<\(\w\+\s\+\)*\(\<\(End\|Exit\)\>.*\)\@<!Declare\(\s\+\%(Ansi\|Unicode\|Auto\)\)\=\s\+Sub\s\+\%(\h\w*\|\[\h\w*\]\)\s\+Lib\s\+"[^"]*"\(\s\+\<Alias\>\s\+"[^"]*"\)\=\s\+\(_\n\s*\)\=# contains=@vbnetSub,vbnetExternalProcedureWords,vbnetString,@vbnetStrict skipwhite nextgroup=vbnetExternalSubArguments
syn region vbnetExternalFunctionArguments start="(" skip="([^)]*)\|\<_$" end=")" end="$" contains=vbnetParameter,vbnetAsClause,@vbnetLiterals,@vbnetStrict keepend skipwhite nextgroup=vbnetAsClause contained
syn match vbnetExternalFunctionDeclaration #\<\(\w\+\s\+\)*\(\<\(End\|Exit\)\>.*\)\@<!Declare\(\s\+\%(Ansi\|Unicode\|Auto\)\)\=\s\+Function\s\+\%(\h\w*\|\[\h\w*\]\)\s\+Lib\s\+"[^"]*"\(\s\+\<Alias\>\s\+"[^"]*"\)\=\s\+\(_\n\s*\)\=# contains=@vbnetFunction,vbnetExternalProcedureWords,vbnetString,@vbnetStrict skipwhite nextgroup=vbnetExternalFunctionArguments
" 9.2.5 Method Parameters
syn keyword vbnetParameter ByVal ByRef Optional ParamArray contained
" 9.2.6 Event Handling
syn keyword vbnetHandlesKeyword Handles MyBase contained
syn match vbnetHandlesClause "\<Handles\s\+\h\w*\.\h\w*\(\s*,\s*\h\w*\.\h\w*\)*\>" contains=vbnetHandlesKeyword,@vbnetStrict contained
syn cluster vbnetHandlesOrImplements contains=vbnetHandlesClause,vbnetImplementsClause
" 9.4 Events
syn keyword vbnetEventWords Public Private Protected Friend Shadows Shared Event contained
syn cluster vbnetEvent contains=vbnetEventWords
syn region vbnetEventArguments start="(" skip="([^)]*)\|\<_$" end=")" end="$" contains=vbnetParameter,vbnetAsClause,@vbnetLiterals,@vbnetStrict keepend skipwhite nextgroup=vbnetImplementsClause,vbnetAsError contained
syn match vbnetEventDeclaration "\<\(\w\+\s\+\)*\(\<\(End\|Exit\)\>.*\)\@<!\<Event\>\s\+\%(\h\w*\>\|\[\h\w*\]\)" contains=@vbnetEvent,@vbnetStrict skipwhite nextgroup=vbnetEventArguments,vbnetImplementsClause
" 9.5 Constants
syn keyword vbnetStatement Const
" 9.6 Instance and Shared Variables
syn keyword vbnetStatement Dim
syn keyword vbnetAsClause As skipwhite nextgroup=@vbnetAnyType,@vbnetStrict contained
syn keyword vbnetAsNewClause As skipwhite nextgroup=vbnetNewClause,@vbnetAnyType,@vbnetStrict
"syn keyword vbnetVarMemberWords Public Private Protected Friend Shadows Shared ReadOnly WithEvents Dim As contained
"syn match vbnetVarMemberDef "\<\(\(Public\|Private\|Protected\|Friend\|Shadows\|Shared\|ReadOnly\|WithEvents\|Dim\)\s\+\)\+\h\w*\(\s\+As\s\+\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*\|[\$%&#!]\)\=\(\s*=\s*[^,]*\)\=\(\s*,\s*\h\w*\(\s\+As\s\+\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*\|[\$%&#!]\)\=\)*" contains=vbnetVarMemberWords,vbnetAsClause,vbnetTypeSpecifier
" 9.7 Properties
syn keyword vbnetPropertyWords Property Default ReadOnly WriteOnly contained
syn cluster vbnetProperty contains=vbnetProcedureWords,vbnetPropertyWords,vbnetParameter
syn match vbnetPropertyDeclaration "\<\(\w\+\s\+\)*\(\<\(End\|Exit\)\>.*\)\@<!\<Property\>\s\+\%(\h\w*\>\|\[\h\w*\]\)" contains=@vbnetProperty,@vbnetStrict containedin=vbnetReadWritePropertyBlock,vbnetReadOnlyPropertyBlock,vbnetWriteOnlyPropertyBlock skipwhite nextgroup=vbnetPropertyArguments,vbnetPropertyReturn,vbnetImplementsClause
syn region vbnetPropertyArguments start="(" skip="([^)]*)\|\<_$" end=")" end="$" contains=vbnetParameter,vbnetAsClause,@vbnetLiterals,@vbnetStrict keepend skipwhite nextgroup=vbnetPropertyReturn,vbnetImplementsClause contained
syn match vbnetPropertyReturn "\<As\s\+\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*\>" contains=vbnetAsClause,@vbnetStrict skipwhite nextgroup=vbnetImplementsClause contained
syn match vbnetProcedureEnd "\<End\s\+Property\>" containedin=vbnetReadWritePropertyBlock,vbnetReadOnlyPropertyBlock,vbnetWriteOnlyPropertyBlock
syn keyword vbnetGetterWords Get Public Protected Private Friend contained
syn cluster vbnetGetter contains=vbnetGetterWords
syn match vbnetGetterDeclaration "\<\(\w\+\s\+\)*\(\<End\>.*\)\@<!\<Get\>" contains=@vbnetGetter,@vbnetStrict contained containedin=vbnetGetterBlock
syn keyword vbnetSetterWords Set ByVal Public Protected Private Friend contained
syn cluster vbnetSetter contains=vbnetSetterWords
syn match vbnetSetterDeclaration "\<\(\w\+\s\+\)*\(\<End\>.*\)\@<!\<Set\s*\(([^)]*)\)\=" contains=@vbnetSetter,vbnetAsClause,vbnetTypeSpecifier,@vbnetStrict contained containedin=vbnetSetterBlock
" 10. Statements
" 10.1 Blocks
syn match vbnetLabel "^\h\w*:"me=e-1
" 10.3 With Statement
syn match vbnetStatement "\<\(End\s\+\)\=With\>"
" 10.4 SyncLock Statement
syn match vbnetStatement "\<\(End\s\+\)\=SyncLock\>"
" 10.5 Event Statements
syn keyword vbnetEvent AddHandler RemoveHandler RaiseEvent
syn keyword vbnetStatement Call
" 10.8 Conditional Statements
syn keyword vbnetConditional Then ElseIf Else
syn match vbnetConditional "\<\(End\s\+\)\=If\>"
syn match vbnetConditional "\<\(Select\(\s\+Case\)\|\(End\|Exit\)\s\+Select\)\>"
syn keyword vbnetLabel Case
" 10.9 Loop Statements
syn keyword vbnetRepeat To Step Each In Next Loop Until
syn match vbnetRepeat "\<\(End\s\+\|Exit\s\+\)\=While\>"
syn match vbnetRepeat "\<\(Exit\s\+\)\=\(Do\|For\)\>"
" 10.10 Exception-Handling Statements
syn keyword vbnetException Catch When Finally Resume Throw
syn match vbnetException "\<\(On\s\+Error\|\(End\s\+\|Exit\s\+\)\=Try\)\>"
" 10.11 Branch Statements
syn keyword vbnetBranch GoTo Stop Return
syn match vbnetBranch "\<Exit\s\+\(Sub\|Function\|Property\)\>"
" 10.12 Array-Handling Statements
syn keyword vbnetArrayHandler Erase
syn match vbnetArrayHandler "\<ReDim\(\s\+Preserve\)\=\>"
" 11. Expressions
" 11.4.3 Instance Expressions
syn keyword vbnetStatement Me MyBase MyClass
" 11.4.5 AddressOf Expressions
syn keyword vbnetStorage AddressOf
" 11.10 New Expressions
syn keyword vbnetNewClause New skipwhite nextgroup=@vbnetAnyType
" 11.11 Cast Expressions
syn keyword vbnetCast CBool CByte CChar CDate CDbl CDec Char CInt CLng CObj CShort CSng CStr CType DirectCast
syn keyword vbnetOperator And Or Not Xor Mod In Is Imp Eqv Like AndAlso OrElse GetType TypeOf
"
" Folding
"
if ! exists("vbnet_no_code_folds")
"syn region vbnetNamespaceBlock start="\(\w\s*\)\@<!\<\(\w\+\s\+\)*\(\<End\>.*\)\@<!\<Namespace\>"rs=s end="\<\End\s\+Namespace\>"re=e contains=TOP fold
syn region vbnetEnumBlock start="\(\w\s*\)\@<!\<\(\w\+\s\+\)*\(\<End\>.*\|\.\)\@<!\<Enum\s"rs=s matchgroup=vbnetEnumWords end="\<\End\s\+Enum\>" contains=vbnetEnumDeclaration,vbnetAttribute,@vbnetComments,@vbnetPreProc,@vbnetLiterals fold
syn region vbnetClassBlock start="\(\w\s*\)\@<!\<\(\w\+\s\+\)*\(\<End\>.*\)\@<!\<Class\>"rs=s matchgroup=vbnetClassWords end="\<\End\s\+Class\>" contains=TOP fold
syn region vbnetStructureBlock start="\(\w\s*\)\@<!\<\(\w\+\s\+\)*\(\<End\>.*\)\@<!\<Structure\>"rs=s matchgroup=vbnetStructureWords end="\<\End\s\+Structure\>" contains=TOP fold
syn region vbnetModuleBlock start="\(\w\s*\)\@<!\<\(\w\+\s\+\)*\(\<End\>.*\)\@<!\<Module\>"rs=s matchgroup=vbnetModuleWords end="\<\End\s\+Module\>" contains=TOP fold
syn region vbnetInterfaceBlock start="\(\w\s*\)\@<!\<\(\w\+\s\+\)*\(\<End\>.*\)\@<!\<Interface\>"rs=s matchgroup=vbnetInterfaceWords end="\<\End\s\+Interface\>" contains=vbnetInterfaceDeclaration,vbnetAttribute,@vbnetComments,@vbnetPreProc,vbnetSubDeclaration,vbnetFunctionDeclaration,vbnetPropertyDeclaration,vbnetEventDeclaration fold
syn region vbnetSubBlock start="\(\w\s*\)\@<!\<\(\w\+\s\+\)*\(\<\(End\|Exit\|Declare\|MustOverride\|Delegate\)\>.*\)\@<!\<Sub\>"rs=s matchgroup=vbnetProcedure end="\<End\s\+Sub\>" contains=TOP fold
syn region vbnetFunctionBlock start="\(\w\s*\)\@<!\<\(\w\+\s\+\)*\(\<\(End\|Exit\|Declare\|MustOverride\|Delegate\)\>.*\)\@<!\<Function\>"rs=s matchgroup=vbnetProcedure end="\<End\s\+Function\>" contains=TOP fold
syn region vbnetReadWritePropertyBlock start="\(\w\s*\)\@<!\<\(\w\+\s\+\)*\(\<\(End\|Exit\|ReadOnly\|WriteOnly\)\>.*\)\@<!\<Property\>"rs=s matchgroup=vbnetProcedure end="\<End\s\+Property\>" contains=vbnetPropertyDeclaration,vbnetGetterBlock,vbnetSetterBlock,@vbnetComments,@vbnetPreProc fold
syn region vbnetReadOnlyPropertyBlock start="\(\w\s*\)\@<!\<\(.*\<ReadOnly\>\&\(\w\+\s\+\)*\)Property\>"rs=s matchgroup=vbnetProcedure end="\<End\s\+Property\>" contains=vbnetPropertyDeclaration,vbnetGetterBlock,vbnetSetterErrorBlock,@vbnetComments,@vbnetPreProc fold
syn region vbnetWriteOnlyPropertyBlock start="\(\w\s*\)\@<!\<\(.*\<WriteOnly\>\&\(\w\+\s\+\)*\)Property\>"rs=s matchgroup=vbnetProcedure end="\<End\s\+Property\>" contains=vbnetPropertyDeclaration,vbnetGetterErrorBlock,vbnetSetterBlock,@vbnetComments,@vbnetPreProc fold
syn region vbnetGetterBlock start="\(\w\s*\)\@<!\<\(\w\+\s\+\)*\(\<End\>.*\)\@<!\<Get\>"rs=s matchgroup=vbnetProcedure end="\<End\s\+Get\>" contains=TOP contained fold
syn region vbnetSetterBlock start="\(\w\s*\)\@<!\<\(\w\+\s\+\)*\(\<End\>.*\)\@<!\<Set\>"rs=s matchgroup=vbnetProcedure end="\<End\s\+Set\>" contains=TOP contained fold
syn region vbnetGetterErrorBlock matchgroup=vbnetError start="\<Get\>" end="\<End\s\+Get\>" contains=TOP contained fold
syn region vbnetSetterErrorBlock matchgroup=vbnetError start="\<Set\>" end="\<End\s\+Set\>" contains=TOP contained fold
else
syn region vbnetReadWritePropertyBlock start="\(\w\s*\)\@<!\<\(\w\+\s\+\)*\(\<\(End\|Exit\|ReadOnly\|WriteOnly\)\>.*\)\@<!\<Property\>"rs=s matchgroup=vbnetProcedure end="\<End\s\+Property\>" contains=vbnetPropertyDeclaration,vbnetGetterBlock,vbnetSetterBlock,@vbnetComments,@vbnetPreProc
syn region vbnetReadOnlyPropertyBlock start="\(\w\s*\)\@<!\<\(.*\<ReadOnly\>\&\(\w\+\s\+\)*\)Property\>"rs=s matchgroup=vbnetProcedure end="\<End\s\+Property\>" contains=vbnetPropertyDeclaration,vbnetGetterBlock,vbnetSetterErrorBlock,@vbnetComments,@vbnetPreProc
syn region vbnetWriteOnlyPropertyBlock start="\(\w\s*\)\@<!\<\(.*\<WriteOnly\>\&\(\w\+\s\+\)*\)Property\>"rs=s matchgroup=vbnetProcedure end="\<End\s\+Property\>" contains=vbnetPropertyDeclaration,vbnetGetterErrorBlock,vbnetSetterBlock,@vbnetComments,@vbnetPreProc
syn region vbnetGetterBlock start="\(\w\s*\)\@<!\<\(\w\+\s\+\)*\(\<End\>.*\)\@<!\<Get\>"rs=s matchgroup=vbnetProcedure end="\<End\s\+Get\>" contains=TOP contained
syn region vbnetSetterBlock start="\(\w\s*\)\@<!\<\(\w\+\s\+\)*\(\<End\>.*\)\@<!\<Set\>"rs=s matchgroup=vbnetProcedure end="\<End\s\+Set\>" contains=TOP contained
syn region vbnetGetterErrorBlock matchgroup=vbnetError start="\<Get\>" end="\<End\s\+Get\>" contains=TOP contained
syn region vbnetSetterErrorBlock matchgroup=vbnetError start="\<Set\>" end="\<End\s\+Set\>" contains=TOP contained
endif
"let vbnet_v7 = 1
if ! exists("vbnet_v7")
" 4.7 Type and Namespace Names
syn keyword vbnetStatement Global
" 4.9 Generic Types and Methods
syn keyword vbnetOfClause Of skipwhite nextgroup=@vbnetAnyType contained
syn match vbnetGeneric "(Of\s\+\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*\(\s\+As\(\s\+\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*\|\s*{\s*\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*\(\s*,\s*\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*\)*\s*}\)*\)\=)" contains=vbnetAsClause,vbnetOfClause,vbnetGenericTypeList,@vbnetStrict contained
syn match vbnetGenericTypeList "{\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*\(\s*,\s*\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*\)*}" contains=@vbnetType contained
" 7.3 Primitive Types
syn keyword vbnetBuiltinType SByte UShort UInteger ULong
" 7.11 Partial Types
"syn keyword vbnetClassModifier Partial
syn keyword vbnetClassWords Partial contained
" 9.8 Operators
"syn match vbnetProcedure "\<\(End\s\+\|Exit\s\+\)\=Operator\>"
syn keyword vbnetOperatorWords Public Shared Operator Widening Narrowing ByVal IsTrue IsFalse CType contained
"syn keyword vbnetParameter ByVal contained
syn match vbnetOperatorDeclaration "\<\(.*\<Shared\>\&\(\w\+\s\+\)*\)\(\<\(End\|Exit\)\>.*\)\@<!\<Operator\>\s\+[A-Za-z&*+/\\^<=>-]*([^)]*)" contains=vbnetOperatorWords,vbnetAsClause,vbnetTypeSpecifier,@vbnetStrict containedin=vbnetOperatorBlock skipwhite nextgroup=vbnetAsClause
syn match vbnetProcedureEnd "\<End\s\+Operator\>" containedin=vbnetOperatorBlock
syn match vbnetBranch "\<Exit\s\+\(Operator\)\>"
if ! exists("vbnet_no_code_folds")
syn region vbnetOperatorBlock start="\(^\|:\)\s*\zs\<\(\w\+\s\+\)*\(\<\(End\|Exit\)\>.*\)\@<!\<Operator\>"rs=s matchgroup=vbnetProcedure end="\<End\s\+Operator\>" contains=TOP fold
endif
" 10.9 Loop Statements
syn match vbnetRepeat "\<Continue\s\+\(Do\|For\|While\)\>"
" 10.13 Using Statement
syn match vbnetStatement "\<\(End\s\+\)\=Using\>"
" 11.5.3 Is Expressions
syn keyword vbnetOperator IsNot
" 11.11 Cast Expressions
syn keyword vbnetCast CSByte CUShort CUInt CULng TryCast
" 12. Documentation Comments
syn match vbnetXmlCommentLeader +'''+ contained
syn match vbnetXmlComment +'''.*$+ contains=vbnetXmlCommentLeader,@vbnetXml
syn include @vbnetXml syntax/xml.vim
endif
if ! exists("vbnet_no_functions")
" From the Microsoft.VisualBasic namespace.
" Extracted from the Mono sources; let me know if I missed any.
syn keyword vbnetMSConversion ErrorToString Fix Hex Int Oct Str Val
syn keyword vbnetMSDateAndTime DateAdd DateDiff DatePart DateSerial DateValue Day Hour Minute Month MonthName Second TimeSerial TimeValue Weekday WeekdayName Year DatePart DateString Now TimeOfDay Timer TimeString Today
syn keyword vbnetMSFileSystem ChDir ChDrive CurDir Dir EOF FileAttr FileClose FileCopy FileDateTime FileGet FileGetObject FileLen FileOpen FilePut FilePutObject FileWidth FreeFile GetAttr Input InputString Kill LineInput Loc Lock LOF MkDir Print PrintLine Rename Reset RmDir Seek SetAttr SPC TAB Unlock Write WriteLine
syn keyword vbnetMSFinancial DDB FV IPmt IRR MIRR NPer NPV Pmt PPmt PV Rate SLN SYD
syn keyword vbnetMSGlobals ScriptEngineBuildVersion ScriptEngineMajorVersion ScriptEngineMinorVersion ScriptEngine
syn keyword vbnetMSInformation Erl Err IsArray IsDate IsDBNull IsError IsNothing IsNumeric IsReference LBound QBColor RGB SystemTypeName TypeName UBound VarType VbTypeName
syn keyword vbnetMSInteraction AppActivate Beep CallByName Choose Command CreateObject DeleteSetting Environ GetAllSettings GetObject GetSetting IIf InputBox MsgBox Partition SaveSetting Shell Switch
syn keyword vbnetMSStrings Asc AscW Chr ChrW Filter Format FormatCurrency FormatDateTime FormatNumber FormatPercent GetChar InStr InStrRev Join LCase Left Len LSet LTrim Mid Replace Right RSet RTrim Space Split StrComp StrConv StrDup StrReverse Trim UCase
syn keyword vbnetMSVBMath Randomize Rnd
syn match vbnetMSFunction "\<Microsoft\.VisualBasic\."
endif
" Define the default highlighting.
" For version 5.7 and earlier: only when not done already
" For version 5.8 and later: only when an item doesn't have highlighting yet
if version >= 508 || !exists("did_vbnet_syntax_inits")
if version < 508
let did_vbnet_syntax_inits = 1
command -nargs=+ HiLink hi link <args>
else
command -nargs=+ HiLink hi def link <args>
endif
" 2. Lexical Grammar
HiLink vbnetTodo Todo
HiLink xmlRegion vbnetXmlComment
HiLink vbnetXmlCommentLeader vbnetXmlComment
HiLink vbnetXmlComment vbnetComment
HiLink vbnetComment Comment
HiLink vbnetKeywordError vbnetError
HiLink vbnetAsError vbnetError
HiLink vbnetError Error
HiLink vbnetBoolean Boolean
HiLink vbnetNumber Number
HiLink vbnetCharacter Character
HiLink vbnetString String
HiLink vbnetDate Constant
HiLink vbnetConstant Constant
" 3. Preprocessing Directives
HiLink vbnetPreCondit PreCondit
HiLink vbnetDefine Define
HiLink vbnetInclude Include
HiLink vbnetPreProc PreProc
" 4. General Concepts
HiLink vbnetTypeAccess vbnetType
HiLink vbnetAccessModifier vbnetModifier
" 5. Attributes
HiLink vbnetAttribute Special
" 6. Source Files and Namespaces
HiLink vbnetStorage vbnetStorageClass
HiLink vbnetOption vbnetPreProc
HiLink vbnetImports vbnetInclude
" 7. Types
HiLink vbnetTypeSpecifier vbnetType
HiLink vbnetBuiltinType vbnetType
HiLink vbnetSystemType vbnetType
HiLink vbnetType Type
HiLink vbnetClassModifier vbnetStorageClass
HiLink vbnetEnumWords vbnetStorageClass
HiLink vbnetModuleWords vbnetStorageClass
HiLink vbnetClassWords vbnetStorageClass
HiLink vbnetStructureWords vbnetStorageClass
HiLink vbnetInterfaceWords vbnetStorageClass
HiLink vbnetTypeImplementsKeyword vbnetStorageClass
HiLink vbnetInheritsKeyword vbnetStorageClass
HiLink vbnetTypeEnd vbnetStorageClass
HiLink vbnetStorageClass StorageClass
" 9. Type Members
HiLink vbnetAsNewClause vbnetAsClause
HiLink vbnetAsClause vbnetStorageClass
HiLink vbnetOfClause vbnetStorageClass
HiLink vbnetProcedureEnd Statement
HiLink vbnetProcedure Statement
HiLink vbnetModifier vbnetStorageClass
HiLink vbnetPropertyWords vbnetStatement
HiLink vbnetGetterWords vbnetStatement
HiLink vbnetSetterWords vbnetStatement
HiLink vbnetExternalProcedureWords vbnetStatement
HiLink vbnetProcedureWords vbnetStatement
HiLink vbnetSubWords vbnetStatement
HiLink vbnetFunctionWords vbnetStatement
HiLink vbnetOperatorWords vbnetStatement
HiLink vbnetVarMemberWords vbnetStatement
HiLink vbnetHandlesKeyword vbnetStatement
HiLink vbnetImplementsKeyword vbnetStatement
HiLink vbnetEventWords vbnetStatement
" 10. Statements
HiLink vbnetStatement Statement
HiLink vbnetLabel Label
HiLink vbnetParameter Keyword
HiLink vbnetEvent vbnetStatement
HiLink vbnetConditional Conditional
HiLink vbnetRepeat Repeat
HiLink vbnetException Exception
HiLink vbnetBranch Keyword
HiLink vbnetArrayHandler Statement
" 11. Expressions
HiLink vbnetCast vbnetType
HiLink vbnetOperator Operator
HiLink vbnetNewClause Keyword
" Functions
HiLink vbnetMSConstants vbnetMSFunction
HiLink vbnetMSConversion vbnetMSFunction
HiLink vbnetMSDateAndTime vbnetMSFunction
HiLink vbnetMSFileSystem vbnetMSFunction
HiLink vbnetMSFinancial vbnetMSFunction
HiLink vbnetMSGlobals vbnetMSFunction
HiLink vbnetMSInformation vbnetMSFunction
HiLink vbnetMSInteraction vbnetMSFunction
HiLink vbnetMSStrings vbnetMSFunction
HiLink vbnetMSVBMath vbnetMSFunction
HiLink vbnetMSVBUtils vbnetMSFunction
HiLink vbnetMSFunction Function
delcommand HiLink
endif
let b:current_syntax = "vbnet"
" vim:set ft=vim sts=4 sw=4: