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