Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1 | " Vim syntax file |
| 2 | " Language: Microsoft VBScript Web Content (ASP) |
Bram Moolenaar | d4755bb | 2004-09-02 19:12:26 +0000 | [diff] [blame] | 3 | " Maintainer: Devin Weaver <ktohg@tritarget.com> (non-functional) |
| 4 | " URL: http://tritarget.com/pub/vim/syntax/aspvbs.vim (broken) |
Bram Moolenaar | 9964e46 | 2007-05-05 17:54:07 +0000 | [diff] [blame] | 5 | " Last Change: 2006 Jun 19 |
| 6 | " by Dan Casey |
Bram Moolenaar | 5c73622 | 2010-01-06 20:54:52 +0100 | [diff] [blame] | 7 | " Version: $Revision: 1.3 $ |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 8 | " Thanks to Jay-Jay <vim@jay-jay.net> for a syntax sync hack, hungarian |
| 9 | " notation, and extra highlighting. |
| 10 | " Thanks to patrick dehne <patrick@steidle.net> for the folding code. |
| 11 | " Thanks to Dean Hall <hall@apt7.com> for testing the use of classes in |
| 12 | " VBScripts which I've been too scared to do. |
| 13 | |
Bram Moolenaar | 89bcfda | 2016-08-30 23:26:57 +0200 | [diff] [blame] | 14 | " quit when a syntax file was already loaded |
| 15 | if exists("b:current_syntax") |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 16 | finish |
| 17 | endif |
| 18 | |
| 19 | if !exists("main_syntax") |
| 20 | let main_syntax = 'aspvbs' |
| 21 | endif |
| 22 | |
Bram Moolenaar | 89bcfda | 2016-08-30 23:26:57 +0200 | [diff] [blame] | 23 | runtime! syntax/html.vim |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 24 | unlet b:current_syntax |
| 25 | |
| 26 | syn cluster htmlPreProc add=AspVBScriptInsideHtmlTags |
| 27 | |
| 28 | |
| 29 | " Colored variable names, if written in hungarian notation |
| 30 | hi def AspVBSVariableSimple term=standout ctermfg=3 guifg=#99ee99 |
| 31 | hi def AspVBSVariableComplex term=standout ctermfg=3 guifg=#ee9900 |
| 32 | syn match AspVBSVariableSimple contained "\<\(bln\|byt\|dtm\=\|dbl\|int\|str\)\u\w*" |
Bram Moolenaar | 9964e46 | 2007-05-05 17:54:07 +0000 | [diff] [blame] | 33 | syn match AspVBSVariableComplex contained "\<\(arr\|ary\|obj\)\u\w*" |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 34 | |
| 35 | |
| 36 | " Functions and methods that are in VB but will cause errors in an ASP page |
Bram Moolenaar | 6c391a7 | 2021-09-09 21:55:11 +0200 | [diff] [blame] | 37 | " This is helpful if your porting VB code to ASP |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 38 | " I removed (Count, Item) because these are common variable names in AspVBScript |
| 39 | syn keyword AspVBSError contained Val Str CVar CVDate DoEvents GoSub Return GoTo |
| 40 | syn keyword AspVBSError contained Stop LinkExecute Add Type LinkPoke |
| 41 | syn keyword AspVBSError contained LinkRequest LinkSend Declare Optional Sleep |
| 42 | syn keyword AspVBSError contained ParamArray Static Erl TypeOf Like LSet RSet Mid StrConv |
| 43 | " It may seem that most of these can fit into a keyword clause but keyword takes |
| 44 | " priority over all so I can't get the multi-word matches |
| 45 | syn match AspVBSError contained "\<Def[a-zA-Z0-9_]\+\>" |
| 46 | syn match AspVBSError contained "^\s*Open\s\+" |
| 47 | syn match AspVBSError contained "Debug\.[a-zA-Z0-9_]*" |
| 48 | syn match AspVBSError contained "^\s*[a-zA-Z0-9_]\+:" |
| 49 | syn match AspVBSError contained "[a-zA-Z0-9_]\+![a-zA-Z0-9_]\+" |
| 50 | syn match AspVBSError contained "^\s*#.*$" |
| 51 | syn match AspVBSError contained "\<As\s\+[a-zA-Z0-9_]*" |
| 52 | syn match AspVBSError contained "\<End\>\|\<Exit\>" |
| 53 | syn match AspVBSError contained "\<On\s\+Error\>\|\<On\>\|\<Error\>\|\<Resume\s\+Next\>\|\<Resume\>" |
| 54 | syn match AspVBSError contained "\<Option\s\+\(Base\|Compare\|Private\s\+Module\)\>" |
| 55 | " This one I want 'cause I always seem to mis-spell it. |
| 56 | syn match AspVBSError contained "Respon\?ce\.\S*" |
| 57 | syn match AspVBSError contained "Respose\.\S*" |
| 58 | " When I looked up the VBScript syntax it mentioned that Property Get/Set/Let |
Bram Moolenaar | 6c391a7 | 2021-09-09 21:55:11 +0200 | [diff] [blame] | 59 | " statements are illegal, however, I have received reports that they do work. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 60 | " So I commented it out for now. |
| 61 | " syn match AspVBSError contained "\<Property\s\+\(Get\|Let\|Set\)\>" |
| 62 | |
| 63 | " AspVBScript Reserved Words. |
| 64 | syn match AspVBSStatement contained "\<On\s\+Error\s\+\(Resume\s\+Next\|goto\s\+0\)\>\|\<Next\>" |
Bram Moolenaar | 9964e46 | 2007-05-05 17:54:07 +0000 | [diff] [blame] | 65 | syn match AspVBSStatement contained "\<End\s\+\(If\|For\|Select\|Class\|Function\|Sub\|With\|Property\)\>" |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 66 | syn match AspVBSStatement contained "\<Exit\s\+\(Do\|For\|Sub\|Function\)\>" |
Bram Moolenaar | 9964e46 | 2007-05-05 17:54:07 +0000 | [diff] [blame] | 67 | syn match AspVBSStatement contained "\<Exit\s\+\(Do\|For\|Sub\|Function\|Property\)\>" |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 68 | syn match AspVBSStatement contained "\<Option\s\+Explicit\>" |
| 69 | syn match AspVBSStatement contained "\<For\s\+Each\>\|\<For\>" |
| 70 | syn match AspVBSStatement contained "\<Set\>" |
| 71 | syn keyword AspVBSStatement contained Call Class Const Default Dim Do Loop Erase And |
| 72 | syn keyword AspVBSStatement contained Function If Then Else ElseIf Or |
| 73 | syn keyword AspVBSStatement contained Private Public Randomize ReDim |
| 74 | syn keyword AspVBSStatement contained Select Case Sub While With Wend Not |
| 75 | |
| 76 | " AspVBScript Functions |
| 77 | syn keyword AspVBSFunction contained Abs Array Asc Atn CBool CByte CCur CDate CDbl |
| 78 | syn keyword AspVBSFunction contained Chr CInt CLng Cos CreateObject CSng CStr Date |
| 79 | syn keyword AspVBSFunction contained DateAdd DateDiff DatePart DateSerial DateValue |
| 80 | syn keyword AspVBSFunction contained Date Day Exp Filter Fix FormatCurrency |
| 81 | syn keyword AspVBSFunction contained FormatDateTime FormatNumber FormatPercent |
| 82 | syn keyword AspVBSFunction contained GetObject Hex Hour InputBox InStr InStrRev Int |
| 83 | syn keyword AspVBSFunction contained IsArray IsDate IsEmpty IsNull IsNumeric |
| 84 | syn keyword AspVBSFunction contained IsObject Join LBound LCase Left Len LoadPicture |
| 85 | syn keyword AspVBSFunction contained Log LTrim Mid Minute Month MonthName MsgBox Now |
| 86 | syn keyword AspVBSFunction contained Oct Replace RGB Right Rnd Round RTrim |
| 87 | syn keyword AspVBSFunction contained ScriptEngine ScriptEngineBuildVersion |
| 88 | syn keyword AspVBSFunction contained ScriptEngineMajorVersion |
| 89 | syn keyword AspVBSFunction contained ScriptEngineMinorVersion Second Sgn Sin Space |
| 90 | syn keyword AspVBSFunction contained Split Sqr StrComp StrReverse String Tan Time Timer |
| 91 | syn keyword AspVBSFunction contained TimeSerial TimeValue Trim TypeName UBound UCase |
| 92 | syn keyword AspVBSFunction contained VarType Weekday WeekdayName Year |
| 93 | |
| 94 | " AspVBScript Methods |
| 95 | syn keyword AspVBSMethods contained Add AddFolders BuildPath Clear Close Copy |
| 96 | syn keyword AspVBSMethods contained CopyFile CopyFolder CreateFolder CreateTextFile |
| 97 | syn keyword AspVBSMethods contained Delete DeleteFile DeleteFolder DriveExists |
| 98 | syn keyword AspVBSMethods contained Exists FileExists FolderExists |
| 99 | syn keyword AspVBSMethods contained GetAbsolutePathName GetBaseName GetDrive |
| 100 | syn keyword AspVBSMethods contained GetDriveName GetExtensionName GetFile |
| 101 | syn keyword AspVBSMethods contained GetFileName GetFolder GetParentFolderName |
| 102 | syn keyword AspVBSMethods contained GetSpecialFolder GetTempName Items Keys Move |
| 103 | syn keyword AspVBSMethods contained MoveFile MoveFolder OpenAsTextStream |
| 104 | syn keyword AspVBSMethods contained OpenTextFile Raise Read ReadAll ReadLine Remove |
| 105 | syn keyword AspVBSMethods contained RemoveAll Skip SkipLine Write WriteBlankLines |
| 106 | syn keyword AspVBSMethods contained WriteLine |
Bram Moolenaar | d4755bb | 2004-09-02 19:12:26 +0000 | [diff] [blame] | 107 | syn match AspVBSMethods contained "Response\.\w*" |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 108 | " Colorize boolean constants: |
| 109 | syn keyword AspVBSMethods contained true false |
| 110 | |
Bram Moolenaar | 6c391a7 | 2021-09-09 21:55:11 +0200 | [diff] [blame] | 111 | " AspVBScript Number Constants |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 112 | " Integer number, or floating point number without a dot. |
| 113 | syn match AspVBSNumber contained "\<\d\+\>" |
| 114 | " Floating point number, with dot |
| 115 | syn match AspVBSNumber contained "\<\d\+\.\d*\>" |
| 116 | " Floating point number, starting with a dot |
| 117 | syn match AspVBSNumber contained "\.\d\+\>" |
| 118 | |
Bram Moolenaar | 6c391a7 | 2021-09-09 21:55:11 +0200 | [diff] [blame] | 119 | " String and Character Constants |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 120 | " removed (skip=+\\\\\|\\"+) because VB doesn't have backslash escaping in |
| 121 | " strings (or does it?) |
| 122 | syn region AspVBSString contained start=+"+ end=+"+ keepend |
| 123 | |
| 124 | " AspVBScript Comments |
| 125 | syn region AspVBSComment contained start="^REM\s\|\sREM\s" end="$" contains=AspVBSTodo keepend |
| 126 | syn region AspVBSComment contained start="^'\|\s'" end="$" contains=AspVBSTodo keepend |
| 127 | " misc. Commenting Stuff |
| 128 | syn keyword AspVBSTodo contained TODO FIXME |
| 129 | |
| 130 | " Cosmetic syntax errors commanly found in VB but not in AspVBScript |
| 131 | " AspVBScript doesn't use line numbers |
| 132 | syn region AspVBSError contained start="^\d" end="\s" keepend |
| 133 | " AspVBScript also doesn't have type defining variables |
| 134 | syn match AspVBSError contained "[a-zA-Z0-9_][\$&!#]"ms=s+1 |
| 135 | " Since 'a%' is a VB variable with a type and in AspVBScript you can have 'a%>' |
| 136 | " I have to make a special case so 'a%>' won't show as an error. |
| 137 | syn match AspVBSError contained "[a-zA-Z0-9_]%\($\|[^>]\)"ms=s+1 |
| 138 | |
| 139 | " Top Cluster |
| 140 | syn cluster AspVBScriptTop contains=AspVBSStatement,AspVBSFunction,AspVBSMethods,AspVBSNumber,AspVBSString,AspVBSComment,AspVBSError,AspVBSVariableSimple,AspVBSVariableComplex |
| 141 | |
| 142 | " Folding |
| 143 | syn region AspVBSFold start="^\s*\(class\)\s\+.*$" end="^\s*end\s\+\(class\)\>.*$" fold contained transparent keepend |
| 144 | syn region AspVBSFold start="^\s*\(private\|public\)\=\(\s\+default\)\=\s\+\(sub\|function\)\s\+.*$" end="^\s*end\s\+\(function\|sub\)\>.*$" fold contained transparent keepend |
| 145 | |
Bram Moolenaar | 6c391a7 | 2021-09-09 21:55:11 +0200 | [diff] [blame] | 146 | " Define AspVBScript delimiters |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 147 | " <%= func("string_with_%>_in_it") %> This is illegal in ASP syntax. |
| 148 | syn region AspVBScriptInsideHtmlTags keepend matchgroup=Delimiter start=+<%=\=+ end=+%>+ contains=@AspVBScriptTop, AspVBSFold |
| 149 | syn region AspVBScriptInsideHtmlTags keepend matchgroup=Delimiter start=+<script\s\+language="\=vbscript"\=[^>]*\s\+runatserver[^>]*>+ end=+</script>+ contains=@AspVBScriptTop |
| 150 | |
| 151 | |
| 152 | " Synchronization |
| 153 | " syn sync match AspVBSSyncGroup grouphere AspVBScriptInsideHtmlTags "<%" |
| 154 | " This is a kludge so the HTML will sync properly |
| 155 | syn sync match htmlHighlight grouphere htmlTag "%>" |
| 156 | |
| 157 | |
| 158 | |
| 159 | " Define the default highlighting. |
Bram Moolenaar | 89bcfda | 2016-08-30 23:26:57 +0200 | [diff] [blame] | 160 | " Only when an item doesn't have highlighting yet |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 161 | |
Bram Moolenaar | f37506f | 2016-08-31 22:22:10 +0200 | [diff] [blame] | 162 | "hi def link AspVBScript Special |
| 163 | hi def link AspVBSLineNumber Comment |
| 164 | hi def link AspVBSNumber Number |
| 165 | hi def link AspVBSError Error |
| 166 | hi def link AspVBSStatement Statement |
| 167 | hi def link AspVBSString String |
| 168 | hi def link AspVBSComment Comment |
| 169 | hi def link AspVBSTodo Todo |
| 170 | hi def link AspVBSFunction Identifier |
| 171 | hi def link AspVBSMethods PreProc |
| 172 | hi def link AspVBSEvents Special |
| 173 | hi def link AspVBSTypeSpecifier Type |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 174 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 175 | |
| 176 | let b:current_syntax = "aspvbs" |
| 177 | |
| 178 | if main_syntax == 'aspvbs' |
| 179 | unlet main_syntax |
| 180 | endif |
| 181 | |
| 182 | " vim: ts=8:sw=2:sts=0:noet |