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