diff options
| author | Adam Stankiewicz <sheerun@sher.pl> | 2013-09-13 17:18:55 +0200 | 
|---|---|---|
| committer | Adam Stankiewicz <sheerun@sher.pl> | 2013-09-13 17:19:09 +0200 | 
| commit | 3e9a36e388dc9850747c7ba8e1e247245dc0eec1 (patch) | |
| tree | cfd6783d3c8420853956f8a67ec49e4b6502f678 | |
| parent | 6c99830e5ad06e67f60d5f42a3e03bb40f4a750f (diff) | |
| download | vim-polyglot-3e9a36e388dc9850747c7ba8e1e247245dc0eec1.tar.gz vim-polyglot-3e9a36e388dc9850747c7ba8e1e247245dc0eec1.zip | |
@tpope uses vbnet syntax, I shall respect that
| -rwxr-xr-x | build | 1 | ||||
| -rw-r--r-- | syntax/vbnet.vim | 431 | 
2 files changed, 432 insertions, 0 deletions
| @@ -80,6 +80,7 @@ PACKS="    jimenezrick/vimerl    tpope/vim-git    skwp/vim-rspec +  vim-scripts/vbnet.vim  "  download "$PACKS" diff --git a/syntax/vbnet.vim b/syntax/vbnet.vim new file mode 100644 index 00000000..c78f5ca8 --- /dev/null +++ b/syntax/vbnet.vim @@ -0,0 +1,431 @@ +" 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: | 
