Beware exceptions when processing input
[MacVim.git] / runtime / syntax / cf.vim
blobbda24d79c4ff04af19ab6cde40b65be8a3c2351b
1 " Vim syntax file
2 "    Language: ColdFusion
3 "  Maintainer: Toby Woodwark (toby.woodwark+vim@gmail.com)
4 " Last Change: 2007 Nov 19
5 "   Filenames: *.cfc *.cfm
6 "     Version: Macromedia ColdFusion MX 7
7 "       Usage: Note that ColdFusion has its own comment syntax
8 "              i.e. <!--- --->
10 " For version 5.x, clear all syntax items.
11 " For version 6.x+, quit if a syntax file is already loaded.
12 if version < 600
13   syntax clear
14 elseif exists("b:current_syntax")
15   finish
16 endif
18 " Use all the stuff from the HTML syntax file.
19 " TODO remove this; CFML is not a superset of HTML
20 if version < 600
21   source <sfile>:p:h/html.vim
22 else
23   runtime! syntax/html.vim
24 endif
26 syn sync fromstart
27 syn sync maxlines=200
28 syn case ignore
30 " Scopes and keywords.
31 syn keyword cfScope contained cgi cffile cookie request caller this thistag
32 syn keyword cfScope contained cfcatch variables application server session client form url attributes
33 syn keyword cfScope contained arguments
34 syn keyword cfBool contained yes no true false
36 " Operator strings.
37 syn keyword cfOperator contained xor eqv and or lt le lte gt ge gte equal eq neq not is mod contains
38 syn match cfOperatorMatch contained "\<does\_s\+not\_s\+contain\>"
39 syn match cfOperatorMatch contained "\<\(greater\|less\)\_s\+than\(\_s\+or\_s\+equal\_s\+to\)\?\>"
40 syn match cfOperatorMatch contained "[\+\-\*\/\\\^\&][\+\-\*\/\\\^\&]\@!"
41 syn cluster cfOperatorCluster contains=cfOperator,cfOperatorMatch
43 " Tag names.
44 syn keyword cfTagName contained cfabort cfapplet cfapplication cfargument cfassociate
45 syn keyword cfTagName contained cfbreak cfcache cfcalendar cfcase cfcatch
46 syn keyword cfTagName contained cfchart cfchartdata cfchartseries cfcol cfcollection
47 syn keyword cfTagName contained cfcomponent cfcontent cfcookie cfdefaultcase cfdirectory
48 syn keyword cfTagName contained cfdocument cfdocumentitem cfdocumentsection cfdump cfelse
49 syn keyword cfTagName contained cfelseif cferror cfexecute cfexit cffile cfflush cfform
50 syn keyword cfTagName contained cfformgroup cfformitem cfftp cffunction cfgraph cfgraphdata
51 syn keyword cfTagName contained cfgrid cfgridcolumn cfgridrow cfgridupdate cfheader
52 syn keyword cfTagName contained cfhtmlhead cfhttp cfhttpparam cfif cfimport
53 syn keyword cfTagName contained cfinclude cfindex cfinput cfinsert cfinvoke cfinvokeargument
54 syn keyword cfTagName contained cfldap cflocation cflock cflog cflogin cfloginuser cflogout
55 syn keyword cfTagName contained cfloop cfmail cfmailparam cfmailpart cfmodule
56 syn keyword cfTagName contained cfNTauthenticate cfobject cfobjectcache cfoutput cfparam
57 syn keyword cfTagName contained cfpop cfprocessingdirective cfprocparam cfprocresult
58 syn keyword cfTagName contained cfproperty cfquery cfqueryparam cfregistry cfreport
59 syn keyword cfTagName contained cfreportparam cfrethrow cfreturn cfsavecontent cfschedule
60 syn keyword cfTagName contained cfscript cfsearch cfselect cfservlet cfservletparam cfset
61 syn keyword cfTagName contained cfsetting cfsilent cfslider cfstoredproc cfswitch cftable
62 syn keyword cfTagName contained cftextarea cftextinput cfthrow cftimer cftrace cftransaction
63 syn keyword cfTagName contained cftree cftreeitem cftry cfupdate cfwddx cfxml
65 " Tag parameters.
66 syn keyword cfArg contained abort accept access accessible action addnewline addtoken
67 syn keyword cfArg contained agentname align appendkey appletsource application
68 syn keyword cfArg contained applicationtimeout applicationtoken archive
69 syn keyword cfArg contained argumentcollection arguments asciiextensionlist
70 syn keyword cfArg contained attachmentpath attributecollection attributes autowidth
71 syn keyword cfArg contained backgroundvisible basetag bcc bgcolor bind bindingname
72 syn keyword cfArg contained blockfactor body bold border branch cachedafter cachedwithin
73 syn keyword cfArg contained casesensitive category categorytree cc cfsqltype charset
74 syn keyword cfArg contained chartheight chartwidth checked class clientmanagement
75 syn keyword cfArg contained clientstorage codebase colheaderalign colheaderbold
76 syn keyword cfArg contained colheaderfont colheaderfontsize colheaderitalic colheaders
77 syn keyword cfArg contained colheadertextcolor collection colorlist colspacing columns
78 syn keyword cfArg contained completepath component condition connection contentid
79 syn keyword cfArg contained context contextbytes contexthighlightbegin
80 syn keyword cfArg contained contexthighlightend contextpassages cookiedomain criteria
81 syn keyword cfArg contained custom1 custom2 custom3 custom4 data dataalign
82 syn keyword cfArg contained databackgroundcolor datacollection datasource daynames
83 syn keyword cfArg contained dbname dbserver dbtype dbvarname debug default delete
84 syn keyword cfArg contained deletebutton deletefile delimiter delimiters description
85 syn keyword cfArg contained destination detail directory disabled display displayname
86 syn keyword cfArg contained disposition dn domain editable enablecab enablecfoutputonly
87 syn keyword cfArg contained enabled encoded encryption enctype enddate endrange endtime
88 syn keyword cfArg contained entry errorcode exception existing expand expires expireurl
89 syn keyword cfArg contained expression extendedinfo extends extensions external
90 syn keyword cfArg contained failifexists failto file filefield filename filter
91 syn keyword cfArg contained firstdayofweek firstrowasheaders fixnewline font fontbold
92 syn keyword cfArg contained fontembed fontitalic fontsize foregroundcolor format
93 syn keyword cfArg contained formfields formula from generateuniquefilenames getasbinary
94 syn keyword cfArg contained grid griddataalign gridlines groovecolor group
95 syn keyword cfArg contained groupcasesensitive header headeralign headerbold headerfont
96 syn keyword cfArg contained headerfontsize headeritalic headerlines headertextcolor
97 syn keyword cfArg contained height highlighthref hint href hrefkey hscroll hspace html
98 syn keyword cfArg contained htmltable id idletimeout img imgopen imgstyle index inline
99 syn keyword cfArg contained input insert insertbutton interval isolation italic item
100 syn keyword cfArg contained itemcolumn key keyonly label labelformat language list
101 syn keyword cfArg contained listgroups locale localfile log loginstorage lookandfeel
102 syn keyword cfArg contained mailerid mailto marginbottom marginleft marginright
103 syn keyword cfArg contained margintop markersize markerstyle mask max maxlength maxrows
104 syn keyword cfArg contained message messagenumber method mimeattach mimetype min mode
105 syn keyword cfArg contained modifytype monthnames multipart multiple name nameconflict
106 syn keyword cfArg contained namespace new newdirectory notsupported null numberformat
107 syn keyword cfArg contained object omit onblur onchange onclick onerror onfocus
108 syn keyword cfArg contained onkeydown onkeyup onload onmousedown onmouseup onreset
109 syn keyword cfArg contained onsubmit onvalidate operation orderby orientation output
110 syn keyword cfArg contained outputfile overwrite ownerpassword pageencoding pageheight
111 syn keyword cfArg contained pagetype pagewidth paintstyle param_1 param_2 param_3
112 syn keyword cfArg contained param_4 param_5 param_6 param_7 param_8 param_9 parent
113 syn keyword cfArg contained parrent passive passthrough password path pattern
114 syn keyword cfArg contained permissions picturebar pieslicestyle port porttypename
115 syn keyword cfArg contained prefix preloader preservedata previouscriteria procedure
116 syn keyword cfArg contained protocol provider providerdsn proxybypass proxypassword
117 syn keyword cfArg contained proxyport proxyserver proxyuser publish query queryasroot
118 syn keyword cfArg contained queryposition range rebind recurse redirect referral
119 syn keyword cfArg contained refreshlabel remotefile replyto report requesttimeout
120 syn keyword cfArg contained required reset resoleurl resolveurl result resultset
121 syn keyword cfArg contained retrycount returnasbinary returncode returntype
122 syn keyword cfArg contained returnvariable roles rotated rowheaderalign rowheaderbold
123 syn keyword cfArg contained rowheaderfont rowheaderfontsize rowheaderitalic rowheaders
124 syn keyword cfArg contained rowheadertextcolor rowheaderwidth rowheight scale scalefrom
125 syn keyword cfArg contained scaleto scope scriptprotect scriptsrc secure securitycontext
126 syn keyword cfArg contained select selectcolor selected selecteddate selectedindex
127 syn keyword cfArg contained selectmode separator seriescolor serieslabel seriesplacement
128 syn keyword cfArg contained server serviceport serviceportname sessionmanagement
129 syn keyword cfArg contained sessiontimeout setclientcookies setcookie setdomaincookies
130 syn keyword cfArg contained show3d showborder showdebugoutput showerror showlegend
131 syn keyword cfArg contained showmarkers showxgridlines showygridlines size skin sort
132 syn keyword cfArg contained sortascendingbutton sortcontrol sortdescendingbutton
133 syn keyword cfArg contained sortxaxis source spoolenable sql src srcfile start startdate
134 syn keyword cfArg contained startrange startrow starttime status statuscode statustext
135 syn keyword cfArg contained step stoponerror style subject suggestions
136 syn keyword cfArg contained suppresswhitespace tablename tableowner tablequalifier
137 syn keyword cfArg contained taglib target task template text textcolor textqualifier
138 syn keyword cfArg contained throwonerror throwonerror throwonfailure throwontimeout
139 syn keyword cfArg contained timeout timespan tipbgcolor tipstyle title to tooltip
140 syn keyword cfArg contained toplevelvariable transfermode type uid unit url urlpath
141 syn keyword cfArg contained useragent username userpassword usetimezoneinfo validate
142 syn keyword cfArg contained validateat value valuecolumn values valuesdelimiter
143 syn keyword cfArg contained valuesdisplay var variable vertical visible vscroll vspace
144 syn keyword cfArg contained webservice width wmode wraptext wsdlfile xaxistitle
145 syn keyword cfArg contained xaxistype xoffset yaxistitle yaxistype yoffset
147 " ColdFusion Functions.
148 syn keyword cfFunctionName contained ACos ASin Abs AddSOAPRequestHeader AddSOAPResponseHeader
149 syn keyword cfFunctionName contained ArrayAppend ArrayAvg ArrayClear ArrayDeleteAt ArrayInsertAt
150 syn keyword cfFunctionName contained ArrayIsEmpty ArrayLen ArrayMax ArrayMin ArrayNew
151 syn keyword cfFunctionName contained ArrayPrepend ArrayResize ArraySet ArraySort ArraySum
152 syn keyword cfFunctionName contained ArraySwap ArrayToList Asc Atn AuthenticatedContext
153 syn keyword cfFunctionName contained AuthenticatedUser BinaryDecode BinaryEncode BitAnd
154 syn keyword cfFunctionName contained BitMaskClear BitMaskRead BitMaskSet BitNot BitOr BitSHLN
155 syn keyword cfFunctionName contained BitSHRN BitXor CJustify Ceiling CharsetDecode CharsetEncode
156 syn keyword cfFunctionName contained Chr Compare CompareNoCase Cos CreateDate CreateDateTime
157 syn keyword cfFunctionName contained CreateODBCDate CreateODBCDateTime CreateODBCTime
158 syn keyword cfFunctionName contained CreateObject CreateTime CreateTimeSpan CreateUUID DE DateAdd
159 syn keyword cfFunctionName contained DateCompare DateConvert DateDiff DateFormat DatePart Day
160 syn keyword cfFunctionName contained DayOfWeek DayOfWeekAsString DayOfYear DaysInMonth DaysInYear
161 syn keyword cfFunctionName contained DecimalFormat DecrementValue Decrypt DecryptBinary
162 syn keyword cfFunctionName contained DeleteClientVariable DirectoryExists DollarFormat Duplicate
163 syn keyword cfFunctionName contained Encrypt EncryptBinary Evaluate Exp ExpandPath FileExists
164 syn keyword cfFunctionName contained Find FindNoCase FindOneOf FirstDayOfMonth Fix FormatBaseN
165 syn keyword cfFunctionName contained GenerateSecretKey GetAuthUser GetBaseTagData GetBaseTagList
166 syn keyword cfFunctionName contained GetBaseTemplatePath GetClientVariablesList GetContextRoot
167 syn keyword cfFunctionName contained GetCurrentTemplatePath GetDirectoryFromPath GetEncoding
168 syn keyword cfFunctionName contained GetException GetFileFromPath GetFunctionList
169 syn keyword cfFunctionName contained GetGatewayHelper GetHttpRequestData GetHttpTimeString
170 syn keyword cfFunctionName contained GetLocalHostIP
171 syn keyword cfFunctionName contained GetLocale GetLocaleDisplayName GetMetaData GetMetricData
172 syn keyword cfFunctionName contained GetPageContext GetProfileSections GetProfileString
173 syn keyword cfFunctionName contained GetSOAPRequest GetSOAPRequestHeader GetSOAPResponse
174 syn keyword cfFunctionName contained GetSOAPResponseHeader GetTempDirectory GetTempFile
175 syn keyword cfFunctionName contained GetTickCount GetTimeZoneInfo GetToken
176 syn keyword cfFunctionName contained HTMLCodeFormat HTMLEditFormat Hash Hour IIf IncrementValue
177 syn keyword cfFunctionName contained InputBaseN Insert Int IsArray IsAuthenticated IsAuthorized
178 syn keyword cfFunctionName contained IsBinary IsBoolean IsCustomFunction IsDate IsDebugMode
179 syn keyword cfFunctionName contained IsDefined
180 syn keyword cfFunctionName contained IsLeapYear IsLocalHost IsNumeric
181 syn keyword cfFunctionName contained IsNumericDate IsObject IsProtected IsQuery IsSOAPRequest
182 syn keyword cfFunctionName contained IsSimpleValue IsStruct IsUserInRole IsValid IsWDDX IsXML
183 syn keyword cfFunctionName contained IsXmlAttribute IsXmlDoc IsXmlElem IsXmlNode IsXmlRoot
184 syn keyword cfFunctionName contained JSStringFormat JavaCast LCase LJustify LSCurrencyFormat
185 syn keyword cfFunctionName contained LSDateFormat LSEuroCurrencyFormat LSIsCurrency LSIsDate
186 syn keyword cfFunctionName contained LSIsNumeric LSNumberFormat LSParseCurrency LSParseDateTime
187 syn keyword cfFunctionName contained LSParseEuroCurrency LSParseNumber LSTimeFormat LTrim Left
188 syn keyword cfFunctionName contained Len ListAppend ListChangeDelims ListContains
189 syn keyword cfFunctionName contained ListContainsNoCase ListDeleteAt ListFind ListFindNoCase
190 syn keyword cfFunctionName contained ListFirst ListGetAt ListInsertAt ListLast ListLen
191 syn keyword cfFunctionName contained ListPrepend ListQualify ListRest ListSetAt ListSort
192 syn keyword cfFunctionName contained ListToArray ListValueCount ListValueCountNoCase Log Log10
193 syn keyword cfFunctionName contained Max Mid Min Minute Month MonthAsString Now NumberFormat
194 syn keyword cfFunctionName contained ParagraphFormat ParseDateTime Pi
195 syn keyword cfFunctionName contained PreserveSingleQuotes Quarter QueryAddColumn QueryAddRow
196 syn keyword cfFunctionName contained QueryNew QuerySetCell QuotedValueList REFind REFindNoCase
197 syn keyword cfFunctionName contained REReplace REReplaceNoCase RJustify RTrim Rand RandRange
198 syn keyword cfFunctionName contained Randomize ReleaseComObject RemoveChars RepeatString Replace
199 syn keyword cfFunctionName contained ReplaceList ReplaceNoCase Reverse Right Round Second
200 syn keyword cfFunctionName contained SendGatewayMessage SetEncoding SetLocale SetProfileString
201 syn keyword cfFunctionName contained SetVariable Sgn Sin SpanExcluding SpanIncluding Sqr StripCR
202 syn keyword cfFunctionName contained StructAppend StructClear StructCopy StructCount StructDelete
203 syn keyword cfFunctionName contained StructFind StructFindKey StructFindValue StructGet
204 syn keyword cfFunctionName contained StructInsert StructIsEmpty StructKeyArray StructKeyExists
205 syn keyword cfFunctionName contained StructKeyList StructNew StructSort StructUpdate Tan
206 syn keyword cfFunctionName contained TimeFormat ToBase64 ToBinary ToScript ToString Trim UCase
207 syn keyword cfFunctionName contained URLDecode URLEncodedFormat URLSessionFormat Val ValueList
208 syn keyword cfFunctionName contained Week Wrap WriteOutput XmlChildPos XmlElemNew XmlFormat
209 syn keyword cfFunctionName contained XmlGetNodeType XmlNew XmlParse XmlSearch XmlTransform
210 syn keyword cfFunctionName contained XmlValidate Year YesNoFormat
212 " Deprecated tags and functions.
213 syn keyword cfDeprecated contained cfauthenticate cfimpersonate cfgraph cfgraphdata
214 syn keyword cfDeprecated contained cfservlet cfservletparam cftextinput
215 syn keyword cfDeprecated contained GetK2ServerDocCount GetK2ServerDocCountLimit GetTemplatePath
216 syn keyword cfDeprecated contained IsK2ServerABroker IsK2ServerDocCountExceeded IsK2ServerOnline
217 syn keyword cfDeprecated contained ParameterExists
219 syn cluster htmlTagNameCluster add=cfTagName
220 syn cluster htmlArgCluster add=cfArg,cfHashRegion,cfScope
221 syn cluster htmlPreproc add=cfHashRegion
223 syn cluster cfExpressionCluster contains=cfFunctionName,cfScope,@cfOperatorCluster,cfScriptStringD,cfScriptStringS,cfScriptNumber,cfBool
225 " Evaluation; skip strings ( this helps with cases like nested IIf() )
226 syn region cfHashRegion start=+#+ skip=+"[^"]*"\|'[^']*'+ end=+#+ contains=@cfExpressionCluster,cfScriptParenError
228 " <cfset>, <cfif>, <cfelseif>, <cfreturn> are analogous to hashmarks (implicit
229 " evaluation) and have 'var'
230 syn region cfSetRegion start="<cfset " start="<cfreturn " start="<cfelseif " start="<cfif " end='>' keepend contains=@cfExpressionCluster,cfSetLHSRegion,cfSetTagEnd,cfScriptType
231 syn region cfSetLHSRegion contained start="<cfreturn" start="<cfelseif" start="<cfif" start="<cfset" end=" " keepend contains=cfTagName,htmlTag
232 syn match  cfSetTagEnd contained '>'
234 " CF comments: similar to SGML comments
235 syn region  cfComment     start='<!---' end='--->' keepend contains=cfCommentTodo
236 syn keyword cfCommentTodo contained TODO FIXME XXX TBD WTF 
238 " CFscript 
239 syn match   cfScriptLineComment      contained "\/\/.*$" contains=cfCommentTodo
240 syn region  cfScriptComment          contained start="/\*"  end="\*/" contains=cfCommentTodo
241 " in CF, quotes are escaped by doubling
242 syn region  cfScriptStringD          contained start=+"+  skip=+\\\\\|""+  end=+"+  extend contains=@htmlPreproc,cfHashRegion
243 syn region  cfScriptStringS          contained start=+'+  skip=+\\\\\|''+  end=+'+  extend contains=@htmlPreproc,cfHashRegion
244 syn match   cfScriptNumber           contained "\<\d\+\>"
245 syn keyword cfScriptConditional      contained if else
246 syn keyword cfScriptRepeat           contained while for in
247 syn keyword cfScriptBranch           contained break switch case default try catch continue
248 syn keyword cfScriptFunction         contained function
249 syn keyword cfScriptType             contained var
250 syn match   cfScriptBraces           contained "[{}]"
251 syn keyword cfScriptStatement        contained return
253 syn cluster cfScriptCluster contains=cfScriptParen,cfScriptLineComment,cfScriptComment,cfScriptStringD,cfScriptStringS,cfScriptFunction,cfScriptNumber,cfScriptRegexpString,cfScriptBoolean,cfScriptBraces,cfHashRegion,cfFunctionName,cfScope,@cfOperatorCluster,cfScriptConditional,cfScriptRepeat,cfScriptBranch,cfScriptType,@cfExpressionCluster,cfScriptStatement
255 " Errors caused by wrong parenthesis; skip strings
256 syn region  cfScriptParen       contained transparent skip=+"[^"]*"\|'[^']*'+ start=+(+ end=+)+ contains=@cfScriptCluster
257 syn match   cfScrParenError     contained +)+
259 syn region cfscriptBlock matchgroup=NONE start="<cfscript>"  end="<\/cfscript>"me=s-1 keepend contains=@cfScriptCluster,cfscriptTag,cfScrParenError
260 syn region  cfscriptTag contained start='<cfscript' end='>' keepend contains=cfTagName,htmlTag
262 " CFML
263 syn cluster cfmlCluster contains=cfComment,@htmlTagNameCluster,@htmlPreproc,cfSetRegion,cfscriptBlock
265 " cfquery = sql
266 unlet b:current_syntax
267 syn include @cfSql <sfile>:p:h/sql.vim
268 unlet b:current_syntax
269 syn region  cfqueryTag  contained start=+<cfquery+ end=+>+    keepend   contains=cfTagName,htmlTag
270 syn region  cfSqlregion start=+<cfquery[^>]*>+ keepend end=+<\/cfquery>+me=s-1 matchgroup=NONE contains=@cfSql,cfComment,@htmlTagNameCluster,cfqueryTag
272 " Define the default highlighting.
273 if version >= 508 || !exists("did_cf_syn_inits")
274   if version < 508
275     let did_cf_syn_inits = 1
276     command -nargs=+ HiLink hi link <args>
277   else
278     command -nargs=+ HiLink hi def link <args>
279   endif
281   HiLink cfTagName              Statement
282   HiLink cfArg                  Type
283   HiLink cfFunctionName         Function
284   HiLink cfHashRegion           PreProc
285   HiLink cfComment              Comment
286   HiLink cfCommentTodo          Todo
287   HiLink cfOperator             Operator
288   HiLink cfOperatorMatch        Operator
289   HiLink cfScope                Title
290   HiLink cfBool                 Constant
292   HiLink cfscriptBlock          Special
293   HiLink cfscriptTag            htmlTag
294   HiLink cfSetRegion            PreProc
295   HiLink cfSetLHSRegion         htmlTag
296   HiLink cfSetTagEnd            htmlTag
298   HiLink cfScriptLineComment    Comment
299   HiLink cfScriptComment        Comment
300   HiLink cfScriptStringS        String
301   HiLink cfScriptStringD        String
302   HiLink cfScriptNumber         cfScriptValue
303   HiLink cfScriptConditional    Conditional
304   HiLink cfScriptRepeat         Repeat
305   HiLink cfScriptBranch         Conditional
306   HiLink cfScriptType           Type
307   HiLink cfScriptStatement      Statement
308   HiLink cfScriptBraces         Function
309   HiLink cfScriptFunction       Function
310   HiLink cfScriptError          Error
311   HiLink cfDeprecated           Error
312   HiLink cfScrParenError        cfScriptError
314   HiLink cfqueryTag htmlTag
315   
316   delcommand HiLink
317 endif
319 let b:current_syntax = "cf"
321 " vim: ts=8 sw=2