1071d4279SBram Moolenaar" Vim syntax file 2071d4279SBram Moolenaar" Language: Microsoft VBScript Web Content (ASP) 3d4755bb0SBram Moolenaar" Maintainer: Devin Weaver <[email protected]> (non-functional) 4d4755bb0SBram Moolenaar" URL: http://tritarget.com/pub/vim/syntax/aspvbs.vim (broken) 59964e468SBram Moolenaar" Last Change: 2006 Jun 19 69964e468SBram Moolenaar" by Dan Casey 75c73622aSBram Moolenaar" Version: $Revision: 1.3 $ 8071d4279SBram Moolenaar" Thanks to Jay-Jay <[email protected]> for a syntax sync hack, hungarian 9071d4279SBram Moolenaar" notation, and extra highlighting. 10071d4279SBram Moolenaar" Thanks to patrick dehne <[email protected]> for the folding code. 11071d4279SBram Moolenaar" Thanks to Dean Hall <[email protected]> for testing the use of classes in 12071d4279SBram Moolenaar" VBScripts which I've been too scared to do. 13071d4279SBram Moolenaar 1489bcfda6SBram Moolenaar" quit when a syntax file was already loaded 1589bcfda6SBram Moolenaarif exists("b:current_syntax") 16071d4279SBram Moolenaar finish 17071d4279SBram Moolenaarendif 18071d4279SBram Moolenaar 19071d4279SBram Moolenaarif !exists("main_syntax") 20071d4279SBram Moolenaar let main_syntax = 'aspvbs' 21071d4279SBram Moolenaarendif 22071d4279SBram Moolenaar 23071d4279SBram Moolenaarruntime! syntax/html.vim 24071d4279SBram Moolenaarunlet b:current_syntax 25071d4279SBram Moolenaar 26071d4279SBram Moolenaarsyn cluster htmlPreProc add=AspVBScriptInsideHtmlTags 27071d4279SBram Moolenaar 28071d4279SBram Moolenaar 29071d4279SBram Moolenaar" Colored variable names, if written in hungarian notation 30071d4279SBram Moolenaarhi def AspVBSVariableSimple term=standout ctermfg=3 guifg=#99ee99 31071d4279SBram Moolenaarhi def AspVBSVariableComplex term=standout ctermfg=3 guifg=#ee9900 32071d4279SBram Moolenaarsyn match AspVBSVariableSimple contained "\<\(bln\|byt\|dtm\=\|dbl\|int\|str\)\u\w*" 339964e468SBram Moolenaarsyn match AspVBSVariableComplex contained "\<\(arr\|ary\|obj\)\u\w*" 34071d4279SBram Moolenaar 35071d4279SBram Moolenaar 36071d4279SBram Moolenaar" Functions and methods that are in VB but will cause errors in an ASP page 37*6c391a74SBram Moolenaar" This is helpful if your porting VB code to ASP 38071d4279SBram Moolenaar" I removed (Count, Item) because these are common variable names in AspVBScript 39071d4279SBram Moolenaarsyn keyword AspVBSError contained Val Str CVar CVDate DoEvents GoSub Return GoTo 40071d4279SBram Moolenaarsyn keyword AspVBSError contained Stop LinkExecute Add Type LinkPoke 41071d4279SBram Moolenaarsyn keyword AspVBSError contained LinkRequest LinkSend Declare Optional Sleep 42071d4279SBram Moolenaarsyn keyword AspVBSError contained ParamArray Static Erl TypeOf Like LSet RSet Mid StrConv 43071d4279SBram Moolenaar" It may seem that most of these can fit into a keyword clause but keyword takes 44071d4279SBram Moolenaar" priority over all so I can't get the multi-word matches 45071d4279SBram Moolenaarsyn match AspVBSError contained "\<Def[a-zA-Z0-9_]\+\>" 46071d4279SBram Moolenaarsyn match AspVBSError contained "^\s*Open\s\+" 47071d4279SBram Moolenaarsyn match AspVBSError contained "Debug\.[a-zA-Z0-9_]*" 48071d4279SBram Moolenaarsyn match AspVBSError contained "^\s*[a-zA-Z0-9_]\+:" 49071d4279SBram Moolenaarsyn match AspVBSError contained "[a-zA-Z0-9_]\+![a-zA-Z0-9_]\+" 50071d4279SBram Moolenaarsyn match AspVBSError contained "^\s*#.*$" 51071d4279SBram Moolenaarsyn match AspVBSError contained "\<As\s\+[a-zA-Z0-9_]*" 52071d4279SBram Moolenaarsyn match AspVBSError contained "\<End\>\|\<Exit\>" 53071d4279SBram Moolenaarsyn match AspVBSError contained "\<On\s\+Error\>\|\<On\>\|\<Error\>\|\<Resume\s\+Next\>\|\<Resume\>" 54071d4279SBram Moolenaarsyn match AspVBSError contained "\<Option\s\+\(Base\|Compare\|Private\s\+Module\)\>" 55071d4279SBram Moolenaar" This one I want 'cause I always seem to mis-spell it. 56071d4279SBram Moolenaarsyn match AspVBSError contained "Respon\?ce\.\S*" 57071d4279SBram Moolenaarsyn match AspVBSError contained "Respose\.\S*" 58071d4279SBram Moolenaar" When I looked up the VBScript syntax it mentioned that Property Get/Set/Let 59*6c391a74SBram Moolenaar" statements are illegal, however, I have received reports that they do work. 60071d4279SBram Moolenaar" So I commented it out for now. 61071d4279SBram Moolenaar" syn match AspVBSError contained "\<Property\s\+\(Get\|Let\|Set\)\>" 62071d4279SBram Moolenaar 63071d4279SBram Moolenaar" AspVBScript Reserved Words. 64071d4279SBram Moolenaarsyn match AspVBSStatement contained "\<On\s\+Error\s\+\(Resume\s\+Next\|goto\s\+0\)\>\|\<Next\>" 659964e468SBram Moolenaarsyn match AspVBSStatement contained "\<End\s\+\(If\|For\|Select\|Class\|Function\|Sub\|With\|Property\)\>" 66071d4279SBram Moolenaarsyn match AspVBSStatement contained "\<Exit\s\+\(Do\|For\|Sub\|Function\)\>" 679964e468SBram Moolenaarsyn match AspVBSStatement contained "\<Exit\s\+\(Do\|For\|Sub\|Function\|Property\)\>" 68071d4279SBram Moolenaarsyn match AspVBSStatement contained "\<Option\s\+Explicit\>" 69071d4279SBram Moolenaarsyn match AspVBSStatement contained "\<For\s\+Each\>\|\<For\>" 70071d4279SBram Moolenaarsyn match AspVBSStatement contained "\<Set\>" 71071d4279SBram Moolenaarsyn keyword AspVBSStatement contained Call Class Const Default Dim Do Loop Erase And 72071d4279SBram Moolenaarsyn keyword AspVBSStatement contained Function If Then Else ElseIf Or 73071d4279SBram Moolenaarsyn keyword AspVBSStatement contained Private Public Randomize ReDim 74071d4279SBram Moolenaarsyn keyword AspVBSStatement contained Select Case Sub While With Wend Not 75071d4279SBram Moolenaar 76071d4279SBram Moolenaar" AspVBScript Functions 77071d4279SBram Moolenaarsyn keyword AspVBSFunction contained Abs Array Asc Atn CBool CByte CCur CDate CDbl 78071d4279SBram Moolenaarsyn keyword AspVBSFunction contained Chr CInt CLng Cos CreateObject CSng CStr Date 79071d4279SBram Moolenaarsyn keyword AspVBSFunction contained DateAdd DateDiff DatePart DateSerial DateValue 80071d4279SBram Moolenaarsyn keyword AspVBSFunction contained Date Day Exp Filter Fix FormatCurrency 81071d4279SBram Moolenaarsyn keyword AspVBSFunction contained FormatDateTime FormatNumber FormatPercent 82071d4279SBram Moolenaarsyn keyword AspVBSFunction contained GetObject Hex Hour InputBox InStr InStrRev Int 83071d4279SBram Moolenaarsyn keyword AspVBSFunction contained IsArray IsDate IsEmpty IsNull IsNumeric 84071d4279SBram Moolenaarsyn keyword AspVBSFunction contained IsObject Join LBound LCase Left Len LoadPicture 85071d4279SBram Moolenaarsyn keyword AspVBSFunction contained Log LTrim Mid Minute Month MonthName MsgBox Now 86071d4279SBram Moolenaarsyn keyword AspVBSFunction contained Oct Replace RGB Right Rnd Round RTrim 87071d4279SBram Moolenaarsyn keyword AspVBSFunction contained ScriptEngine ScriptEngineBuildVersion 88071d4279SBram Moolenaarsyn keyword AspVBSFunction contained ScriptEngineMajorVersion 89071d4279SBram Moolenaarsyn keyword AspVBSFunction contained ScriptEngineMinorVersion Second Sgn Sin Space 90071d4279SBram Moolenaarsyn keyword AspVBSFunction contained Split Sqr StrComp StrReverse String Tan Time Timer 91071d4279SBram Moolenaarsyn keyword AspVBSFunction contained TimeSerial TimeValue Trim TypeName UBound UCase 92071d4279SBram Moolenaarsyn keyword AspVBSFunction contained VarType Weekday WeekdayName Year 93071d4279SBram Moolenaar 94071d4279SBram Moolenaar" AspVBScript Methods 95071d4279SBram Moolenaarsyn keyword AspVBSMethods contained Add AddFolders BuildPath Clear Close Copy 96071d4279SBram Moolenaarsyn keyword AspVBSMethods contained CopyFile CopyFolder CreateFolder CreateTextFile 97071d4279SBram Moolenaarsyn keyword AspVBSMethods contained Delete DeleteFile DeleteFolder DriveExists 98071d4279SBram Moolenaarsyn keyword AspVBSMethods contained Exists FileExists FolderExists 99071d4279SBram Moolenaarsyn keyword AspVBSMethods contained GetAbsolutePathName GetBaseName GetDrive 100071d4279SBram Moolenaarsyn keyword AspVBSMethods contained GetDriveName GetExtensionName GetFile 101071d4279SBram Moolenaarsyn keyword AspVBSMethods contained GetFileName GetFolder GetParentFolderName 102071d4279SBram Moolenaarsyn keyword AspVBSMethods contained GetSpecialFolder GetTempName Items Keys Move 103071d4279SBram Moolenaarsyn keyword AspVBSMethods contained MoveFile MoveFolder OpenAsTextStream 104071d4279SBram Moolenaarsyn keyword AspVBSMethods contained OpenTextFile Raise Read ReadAll ReadLine Remove 105071d4279SBram Moolenaarsyn keyword AspVBSMethods contained RemoveAll Skip SkipLine Write WriteBlankLines 106071d4279SBram Moolenaarsyn keyword AspVBSMethods contained WriteLine 107d4755bb0SBram Moolenaarsyn match AspVBSMethods contained "Response\.\w*" 108071d4279SBram Moolenaar" Colorize boolean constants: 109071d4279SBram Moolenaarsyn keyword AspVBSMethods contained true false 110071d4279SBram Moolenaar 111*6c391a74SBram Moolenaar" AspVBScript Number Constants 112071d4279SBram Moolenaar" Integer number, or floating point number without a dot. 113071d4279SBram Moolenaarsyn match AspVBSNumber contained "\<\d\+\>" 114071d4279SBram Moolenaar" Floating point number, with dot 115071d4279SBram Moolenaarsyn match AspVBSNumber contained "\<\d\+\.\d*\>" 116071d4279SBram Moolenaar" Floating point number, starting with a dot 117071d4279SBram Moolenaarsyn match AspVBSNumber contained "\.\d\+\>" 118071d4279SBram Moolenaar 119*6c391a74SBram Moolenaar" String and Character Constants 120071d4279SBram Moolenaar" removed (skip=+\\\\\|\\"+) because VB doesn't have backslash escaping in 121071d4279SBram Moolenaar" strings (or does it?) 122071d4279SBram Moolenaarsyn region AspVBSString contained start=+"+ end=+"+ keepend 123071d4279SBram Moolenaar 124071d4279SBram Moolenaar" AspVBScript Comments 125071d4279SBram Moolenaarsyn region AspVBSComment contained start="^REM\s\|\sREM\s" end="$" contains=AspVBSTodo keepend 126071d4279SBram Moolenaarsyn region AspVBSComment contained start="^'\|\s'" end="$" contains=AspVBSTodo keepend 127071d4279SBram Moolenaar" misc. Commenting Stuff 128071d4279SBram Moolenaarsyn keyword AspVBSTodo contained TODO FIXME 129071d4279SBram Moolenaar 130071d4279SBram Moolenaar" Cosmetic syntax errors commanly found in VB but not in AspVBScript 131071d4279SBram Moolenaar" AspVBScript doesn't use line numbers 132071d4279SBram Moolenaarsyn region AspVBSError contained start="^\d" end="\s" keepend 133071d4279SBram Moolenaar" AspVBScript also doesn't have type defining variables 134071d4279SBram Moolenaarsyn match AspVBSError contained "[a-zA-Z0-9_][\$&!#]"ms=s+1 135071d4279SBram Moolenaar" Since 'a%' is a VB variable with a type and in AspVBScript you can have 'a%>' 136071d4279SBram Moolenaar" I have to make a special case so 'a%>' won't show as an error. 137071d4279SBram Moolenaarsyn match AspVBSError contained "[a-zA-Z0-9_]%\($\|[^>]\)"ms=s+1 138071d4279SBram Moolenaar 139071d4279SBram Moolenaar" Top Cluster 140071d4279SBram Moolenaarsyn cluster AspVBScriptTop contains=AspVBSStatement,AspVBSFunction,AspVBSMethods,AspVBSNumber,AspVBSString,AspVBSComment,AspVBSError,AspVBSVariableSimple,AspVBSVariableComplex 141071d4279SBram Moolenaar 142071d4279SBram Moolenaar" Folding 143071d4279SBram Moolenaarsyn region AspVBSFold start="^\s*\(class\)\s\+.*$" end="^\s*end\s\+\(class\)\>.*$" fold contained transparent keepend 144071d4279SBram Moolenaarsyn region AspVBSFold start="^\s*\(private\|public\)\=\(\s\+default\)\=\s\+\(sub\|function\)\s\+.*$" end="^\s*end\s\+\(function\|sub\)\>.*$" fold contained transparent keepend 145071d4279SBram Moolenaar 146*6c391a74SBram Moolenaar" Define AspVBScript delimiters 147071d4279SBram Moolenaar" <%= func("string_with_%>_in_it") %> This is illegal in ASP syntax. 148071d4279SBram Moolenaarsyn region AspVBScriptInsideHtmlTags keepend matchgroup=Delimiter start=+<%=\=+ end=+%>+ contains=@AspVBScriptTop, AspVBSFold 149071d4279SBram Moolenaarsyn region AspVBScriptInsideHtmlTags keepend matchgroup=Delimiter start=+<script\s\+language="\=vbscript"\=[^>]*\s\+runatserver[^>]*>+ end=+</script>+ contains=@AspVBScriptTop 150071d4279SBram Moolenaar 151071d4279SBram Moolenaar 152071d4279SBram Moolenaar" Synchronization 153071d4279SBram Moolenaar" syn sync match AspVBSSyncGroup grouphere AspVBScriptInsideHtmlTags "<%" 154071d4279SBram Moolenaar" This is a kludge so the HTML will sync properly 155071d4279SBram Moolenaarsyn sync match htmlHighlight grouphere htmlTag "%>" 156071d4279SBram Moolenaar 157071d4279SBram Moolenaar 158071d4279SBram Moolenaar 159071d4279SBram Moolenaar" Define the default highlighting. 16089bcfda6SBram Moolenaar" Only when an item doesn't have highlighting yet 161071d4279SBram Moolenaar 162f37506f6SBram Moolenaar"hi def link AspVBScript Special 163f37506f6SBram Moolenaarhi def link AspVBSLineNumber Comment 164f37506f6SBram Moolenaarhi def link AspVBSNumber Number 165f37506f6SBram Moolenaarhi def link AspVBSError Error 166f37506f6SBram Moolenaarhi def link AspVBSStatement Statement 167f37506f6SBram Moolenaarhi def link AspVBSString String 168f37506f6SBram Moolenaarhi def link AspVBSComment Comment 169f37506f6SBram Moolenaarhi def link AspVBSTodo Todo 170f37506f6SBram Moolenaarhi def link AspVBSFunction Identifier 171f37506f6SBram Moolenaarhi def link AspVBSMethods PreProc 172f37506f6SBram Moolenaarhi def link AspVBSEvents Special 173f37506f6SBram Moolenaarhi def link AspVBSTypeSpecifier Type 174071d4279SBram Moolenaar 175071d4279SBram Moolenaar 176071d4279SBram Moolenaarlet b:current_syntax = "aspvbs" 177071d4279SBram Moolenaar 178071d4279SBram Moolenaarif main_syntax == 'aspvbs' 179071d4279SBram Moolenaar unlet main_syntax 180071d4279SBram Moolenaarendif 181071d4279SBram Moolenaar 182071d4279SBram Moolenaar" vim: ts=8:sw=2:sts=0:noet 183