1" Vim syntax file
2" Language:	CFML
3" Maintainer:	Toby Woodwark (toby.woodwark+vim@gmail.com)
4" Last Change:	2010-03-02
5" Filenames:	*.cfc *.cfm
6" Version:	Adobe ColdFusion 9
7" Usage:	This file contains both syntax definitions
8" 		and a list of known builtin tags, functions and keywords.
9" 		Refs - 
10" http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WS8f0cc78011fffa71866534d11cdad96e4e-8000.html
11" http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec17324-8000.html
12" TODO: 
13" 		Support the limited array literal and struct literal syntax in CF8+.
14" 		Highlight namespaced tags fom cfimport.
15" 		Complete CF9+ cfscript support.
16" 		Railo support.
17" Options:
18"	d_noinclude_html - set to prevent HTML highlighting.	Use this if you are not working on HTML.
19
20" Quit if a syntax file is already loaded.
21if exists("b:current_syntax")
22  finish
23endif
24
25if exists("d_noinclude_html")
26  " Define alternatives to the HTML syntax file.
27
28  " Copied from html.vim - the rules for matching a CF tag match	those for HTML/SGML.
29  " CFML syntax is more permissive when it comes to superfluous <> chars.
30  syn region	htmlString	contained start=+"+ end=+"+ contains=@htmlPreproc
31  syn region	htmlString	contained start=+'+ end=+'+ contains=@htmlPreproc
32  syn match	htmlValue	contained "=[\t ]*[^'" \t>][^ \t>]*"hs=s+1	contains=@htmlPreproc
33  " Hacked htmlTag so that it only matches cf tags and not random <> chars.
34  syn region	htmlEndTag	start=+</cf+	end=+>+ contains=htmlTagN,htmlTagError
35  syn region	htmlTag		start=+<\s*cf[^/]+	end=+>+ contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,@htmlPreproc,@htmlArgCluster
36  syn match	htmlTagN	contained +<\s*[-a-zA-Z0-9]\++hs=s+1 contains=htmlTagName,@htmlTagNameCluster
37  syn match	htmlTagN	contained +</\s*[-a-zA-Z0-9]\++hs=s+2 contains=htmlTagName,@htmlTagNameCluster
38  syn match	htmlTagError	contained "[^>]<"ms=s+1
39else
40  " Use all the stuff from the HTML syntax file.
41  " This means eg HTML comments are highlighted as comments, even if they include cf tags.
42  runtime! syntax/html.vim
43endif
44
45syn sync	fromstart
46syn sync	maxlines=200
47syn case	ignore
48
49" Scopes and keywords.
50syn keyword	cfScope		contained cgi cffile cookie request caller this thistag
51syn keyword	cfScope		contained cfcatch variables application server session client form url local
52syn keyword	cfScope		contained arguments super cfhttp attributes error
53syn keyword	cfBool		contained yes no true false
54
55" Operator strings.
56" ColdFusion <=7:
57syn keyword	cfOperator		contained xor eqv and or lt le lte gt ge gte equal eq neq not is mod contains
58syn match	cfOperatorMatch		contained "+" 
59syn match	cfOperatorMatch		contained "\-"
60syn match	cfOperatorMatch		contained "[\*\/\\\^\&][\+\-\*\/\\\^\&]\@!"
61syn match	cfOperatorMatch		contained "\<\(not\_s\+\)\?equal\>"
62syn match	cfOperatorMatch		contained "\<does\_s\+not\_s\+contain\>"
63syn match	cfOperatorMatch		contained "\<\(greater\|less\)\_s\+than\(\_s\+or\_s\+equal\_s\+to\)\?\>"
64" ColdFusion 8:
65syn keyword	cfOperator		contained imp
66syn match	cfOperatorMatch		contained "[?%:!]"
67syn match	cfOperatorMatch		contained "[\+\-\*\/\&]=" 
68syn match	cfOperatorMatch		contained "++"
69syn match	cfOperatorMatch		contained "--"
70syn match	cfOperatorMatch	 	contained "&&"
71syn match	cfOperatorMatch	 	contained "||"
72
73syn cluster	cfOperatorCluster	contains=cfOperator,cfOperatorMatch
74
75" Custom tags called with the <cf_xxx> syntax.
76syn match	cfCustomTagName		contained "\<cf_[a-zA-Z0-9_]\+\>"
77" (TODO match	namespaced tags imported using cfimport, similarly.)
78
79" Tag names.
80" ColdFusion <=7:
81syn keyword	cfTagName	contained cfabort cfapplet cfapplication cfargument cfassociate
82syn keyword	cfTagName	contained cfbreak cfcache cfcalendar cfcase cfcatch
83syn keyword	cfTagName	contained cfchart cfchartdata cfchartseries cfcol cfcollection
84syn keyword	cfTagName	contained cfcomponent cfcontent cfcookie cfdefaultcase cfdirectory
85syn keyword	cfTagName	contained cfdocument cfdocumentitem cfdocumentsection cfdump cfelse
86syn keyword	cfTagName	contained cfelseif cferror cfexecute cfexit cffile cfflush cfform
87syn keyword	cfTagName	contained cfformgroup cfformitem cfftp cffunction
88syn keyword	cfTagName	contained cfgrid cfgridcolumn cfgridrow cfgridupdate cfheader
89syn keyword	cfTagName	contained cfhtmlhead cfhttp cfhttpparam cfif cfimport
90syn keyword	cfTagName	contained cfinclude cfindex cfinput cfinsert cfinvoke cfinvokeargument
91syn keyword	cfTagName	contained cfldap cflocation cflock cflog cflogin cfloginuser cflogout
92syn keyword	cfTagName	contained cfloop cfmail cfmailparam cfmailpart cfmodule
93syn keyword	cfTagName	contained cfNTauthenticate cfobject cfobjectcache cfoutput cfparam
94syn keyword	cfTagName	contained cfpop cfprocessingdirective cfprocparam cfprocresult
95syn keyword	cfTagName	contained cfproperty cfquery cfqueryparam cfregistry cfreport
96syn keyword	cfTagName	contained cfreportparam cfrethrow cfreturn cfsavecontent cfschedule
97syn keyword	cfTagName	contained cfscript cfsearch cfselect cfservletparam cfset
98syn keyword	cfTagName	contained cfsetting cfsilent cfslider cfstoredproc cfswitch cftable
99syn keyword	cfTagName	contained cftextarea cftextinput cfthrow cftimer cftrace cftransaction
100syn keyword	cfTagName	contained cftree cftreeitem cftry cfupdate cfwddx cfxml
101" ColdFusion 8:
102syn keyword	cfTagName	contained cfajaximport cfajaxproxy cfdbinfo cfdiv cfexchangecalendar
103syn keyword	cfTagName	contained cfexchangeconnection cfexchangecontact cfexchangefilter 
104syn keyword	cfTagName	contained cfexchangemail cfexchangetask cffeed
105syn keyword	cfTagName	contained cfinterface cflayout cflayoutarea cfmenu cfmenuitem
106syn keyword	cfTagName	contained cfpdf cfpdfform cfpdfformparam cfpdfparam cfpdfsubform cfpod
107syn keyword	cfTagName	contained cfpresentation cfpresentationslide cfpresenter cfprint
108syn keyword	cfTagName	contained cfsprydataset cfthread cftooltip cfwindow cfzip cfzipparam
109" ColdFusion 9:
110syn keyword	cfTagName	contained cfcontinue cffileupload cffinally
111syn keyword	cfTagName	contained cfimage cfimap 
112syn keyword	cfTagName	contained cfmap cfmapitem cfmediaplayer cfmessagebox
113syn keyword	cfTagName	contained cfprocparam cfprogressbar
114syn keyword	cfTagName	contained cfsharepoint cfspreadsheet
115
116" Tag attributes.
117" XXX Not updated for ColdFusion 8/9.
118" These are becoming a headache to maintain, so might be removed.
119syn keyword	cfArg		contained abort accept access accessible action addnewline addtoken
120syn keyword	cfArg		contained agentname align appendkey appletsource application
121syn keyword	cfArg		contained applicationtimeout applicationtoken archive
122syn keyword	cfArg		contained argumentcollection arguments asciiextensionlist
123syn keyword	cfArg		contained attachmentpath attributecollection attributes autowidth
124syn keyword	cfArg		contained backgroundvisible basetag bcc bgcolor bind bindingname
125syn keyword	cfArg		contained blockfactor body bold border branch cachedafter cachedwithin
126syn keyword	cfArg		contained casesensitive category categorytree cc cfsqltype charset
127syn keyword	cfArg		contained chartheight chartwidth checked class clientmanagement
128syn keyword	cfArg		contained clientstorage codebase colheaderalign colheaderbold
129syn keyword	cfArg		contained colheaderfont colheaderfontsize colheaderitalic colheaders
130syn keyword	cfArg		contained colheadertextcolor collection colorlist colspacing columns
131syn keyword	cfArg		contained completepath component condition connection contentid
132syn keyword	cfArg		contained context contextbytes contexthighlightbegin
133syn keyword	cfArg		contained contexthighlightend contextpassages cookiedomain criteria
134syn keyword	cfArg		contained custom1 custom2 custom3 custom4 data dataalign
135syn keyword	cfArg		contained databackgroundcolor datacollection datasource daynames
136syn keyword	cfArg		contained dbname dbserver dbtype dbvarname debug default delete
137syn keyword	cfArg		contained deletebutton deletefile delimiter delimiters description
138syn keyword	cfArg		contained destination detail directory disabled display displayname
139syn keyword	cfArg		contained disposition dn domain editable enablecab enablecfoutputonly
140syn keyword	cfArg		contained enabled encoded encryption enctype enddate endrange endtime
141syn keyword	cfArg		contained entry errorcode exception existing expand expires expireurl
142syn keyword	cfArg		contained expression extendedinfo extends extensions external
143syn keyword	cfArg		contained failifexists failto file filefield filename filter
144syn keyword	cfArg		contained firstdayofweek firstrowasheaders fixnewline font fontbold
145syn keyword	cfArg		contained fontembed fontitalic fontsize foregroundcolor format
146syn keyword	cfArg		contained formfields formula from generateuniquefilenames getasbinary
147syn keyword	cfArg		contained grid griddataalign gridlines groovecolor group
148syn keyword	cfArg		contained groupcasesensitive header headeralign headerbold headerfont
149syn keyword	cfArg		contained headerfontsize headeritalic headerlines headertextcolor
150syn keyword	cfArg		contained height highlighthref hint href hrefkey hscroll hspace html
151syn keyword	cfArg		contained htmltable id idletimeout img imgopen imgstyle index inline
152syn keyword	cfArg		contained input insert insertbutton interval isolation italic item
153syn keyword	cfArg		contained itemcolumn key keyonly label labelformat language list
154syn keyword	cfArg		contained listgroups locale localfile log loginstorage lookandfeel
155syn keyword	cfArg		contained mailerid mailto marginbottom marginleft marginright
156syn keyword	cfArg		contained margintop markersize markerstyle mask max maxlength maxrows
157syn keyword	cfArg		contained message messagenumber method mimeattach mimetype min mode
158syn keyword	cfArg		contained modifytype monthnames multipart multiple name nameconflict
159syn keyword	cfArg		contained namespace new newdirectory notsupported null numberformat
160syn keyword	cfArg		contained object omit onblur onchange onclick onerror onfocus
161syn keyword	cfArg		contained onkeydown onkeyup onload onmousedown onmouseup onreset
162syn keyword	cfArg		contained onsubmit onvalidate operation orderby orientation output
163syn keyword	cfArg		contained outputfile overwrite ownerpassword pageencoding pageheight
164syn keyword	cfArg		contained pagetype pagewidth paintstyle param_1 param_2 param_3
165syn keyword	cfArg		contained param_4 param_5 param_6 param_7 param_8 param_9 parent
166syn keyword	cfArg		contained parrent passive passthrough password path pattern
167syn keyword	cfArg		contained permissions picturebar pieslicestyle port porttypename
168syn keyword	cfArg		contained prefix preloader preservedata previouscriteria procedure
169syn keyword	cfArg		contained protocol provider providerdsn proxybypass proxypassword
170syn keyword	cfArg		contained proxyport proxyserver proxyuser publish query queryasroot
171syn keyword	cfArg		contained queryposition range rebind recurse redirect referral
172syn keyword	cfArg		contained refreshlabel remotefile replyto report requesttimeout
173syn keyword	cfArg		contained required reset resoleurl resolveurl result resultset
174syn keyword	cfArg		contained retrycount returnasbinary returncode returntype
175syn keyword	cfArg		contained returnvariable roles rotated rowheaderalign rowheaderbold
176syn keyword	cfArg		contained rowheaderfont rowheaderfontsize rowheaderitalic rowheaders
177syn keyword	cfArg		contained rowheadertextcolor rowheaderwidth rowheight scale scalefrom
178syn keyword	cfArg		contained scaleto scope scriptprotect scriptsrc secure securitycontext
179syn keyword	cfArg		contained select selectcolor selected selecteddate selectedindex
180syn keyword	cfArg		contained selectmode separator seriescolor serieslabel seriesplacement
181syn keyword	cfArg		contained server serviceport serviceportname sessionmanagement
182syn keyword	cfArg		contained sessiontimeout setclientcookies setcookie setdomaincookies
183syn keyword	cfArg		contained show3d showborder showdebugoutput showerror showlegend
184syn keyword	cfArg		contained showmarkers showxgridlines showygridlines size skin sort
185syn keyword	cfArg		contained sortascendingbutton sortcontrol sortdescendingbutton
186syn keyword	cfArg		contained sortxaxis source spoolenable sql src srcfile start startdate
187syn keyword	cfArg		contained startrange startrow starttime status statuscode statustext
188syn keyword	cfArg		contained step stoponerror style subject suggestions
189syn keyword	cfArg		contained suppresswhitespace tablename tableowner tablequalifier
190syn keyword	cfArg		contained taglib target task template text textcolor textqualifier
191syn keyword	cfArg		contained throwonerror throwonerror throwonfailure throwontimeout
192syn keyword	cfArg		contained timeout timespan tipbgcolor tipstyle title to tooltip
193syn keyword	cfArg		contained toplevelvariable transfermode type uid unit url urlpath
194syn keyword	cfArg		contained useragent username userpassword usetimezoneinfo validate
195syn keyword	cfArg		contained validateat value valuecolumn values valuesdelimiter
196syn keyword	cfArg		contained valuesdisplay var variable vertical visible vscroll vspace
197syn keyword	cfArg		contained webservice width wmode wraptext wsdlfile xaxistitle
198syn keyword	cfArg		contained xaxistype xoffset yaxistitle yaxistype yoffset
199
200" Functions.
201" ColdFusion <=7:
202syn keyword	cfFunctionName		contained ACos ASin Abs AddSOAPRequestHeader AddSOAPResponseHeader
203syn keyword	cfFunctionName		contained ArrayAppend ArrayAvg ArrayClear ArrayDeleteAt ArrayInsertAt
204syn keyword	cfFunctionName		contained ArrayIsEmpty ArrayLen ArrayMax ArrayMin ArrayNew
205syn keyword	cfFunctionName		contained ArrayPrepend ArrayResize ArraySet ArraySort ArraySum
206syn keyword	cfFunctionName		contained ArraySwap ArrayToList Asc Atn AuthenticatedContext
207syn keyword	cfFunctionName		contained AuthenticatedUser BinaryDecode BinaryEncode BitAnd
208syn keyword	cfFunctionName		contained BitMaskClear BitMaskRead BitMaskSet BitNot BitOr BitSHLN
209syn keyword	cfFunctionName		contained BitSHRN BitXor CJustify Ceiling CharsetDecode CharsetEncode
210syn keyword	cfFunctionName		contained Chr Compare CompareNoCase Cos CreateDate CreateDateTime
211syn keyword	cfFunctionName		contained CreateODBCDate CreateODBCDateTime CreateODBCTime
212syn keyword	cfFunctionName		contained CreateObject CreateTime CreateTimeSpan CreateUUID DE DateAdd
213syn keyword	cfFunctionName		contained DateCompare DateConvert DateDiff DateFormat DatePart Day
214syn keyword	cfFunctionName		contained DayOfWeek DayOfWeekAsString DayOfYear DaysInMonth DaysInYear
215syn keyword	cfFunctionName		contained DecimalFormat DecrementValue Decrypt DecryptBinary
216syn keyword	cfFunctionName		contained DeleteClientVariable DirectoryExists DollarFormat Duplicate
217syn keyword	cfFunctionName		contained Encrypt EncryptBinary Evaluate Exp ExpandPath FileExists
218syn keyword	cfFunctionName		contained Find FindNoCase FindOneOf FirstDayOfMonth Fix FormatBaseN
219syn keyword	cfFunctionName		contained GenerateSecretKey GetAuthUser GetBaseTagData GetBaseTagList
220syn keyword	cfFunctionName		contained GetBaseTemplatePath GetClientVariablesList GetContextRoot
221syn keyword	cfFunctionName		contained GetCurrentTemplatePath GetDirectoryFromPath GetEncoding
222syn keyword	cfFunctionName		contained GetException GetFileFromPath GetFunctionList
223syn keyword	cfFunctionName		contained GetGatewayHelper GetHttpRequestData GetHttpTimeString
224syn keyword	cfFunctionName		contained GetLocalHostIP
225syn keyword	cfFunctionName		contained GetLocale GetLocaleDisplayName GetMetaData GetMetricData
226syn keyword	cfFunctionName		contained GetPageContext GetProfileSections GetProfileString
227syn keyword	cfFunctionName		contained GetSOAPRequest GetSOAPRequestHeader GetSOAPResponse
228syn keyword	cfFunctionName		contained GetSOAPResponseHeader GetTempDirectory GetTempFile
229syn keyword	cfFunctionName		contained GetTickCount GetTimeZoneInfo GetToken
230syn keyword	cfFunctionName		contained HTMLCodeFormat HTMLEditFormat Hash Hour IIf IncrementValue
231syn keyword	cfFunctionName		contained InputBaseN Insert Int IsArray IsAuthenticated IsAuthorized
232syn keyword	cfFunctionName		contained IsBinary IsBoolean IsCustomFunction IsDate IsDebugMode
233syn keyword	cfFunctionName		contained IsDefined
234syn keyword	cfFunctionName		contained IsLeapYear IsLocalHost IsNumeric
235syn keyword	cfFunctionName		contained IsNumericDate IsObject IsProtected IsQuery IsSOAPRequest
236syn keyword	cfFunctionName		contained IsSimpleValue IsStruct IsUserInRole IsValid IsWDDX IsXML
237syn keyword	cfFunctionName		contained IsXmlAttribute IsXmlDoc IsXmlElem IsXmlNode IsXmlRoot
238syn keyword	cfFunctionName		contained JSStringFormat JavaCast LCase LJustify LSCurrencyFormat
239syn keyword	cfFunctionName		contained LSDateFormat LSEuroCurrencyFormat LSIsCurrency LSIsDate
240syn keyword	cfFunctionName		contained LSIsNumeric LSNumberFormat LSParseCurrency LSParseDateTime
241syn keyword	cfFunctionName		contained LSParseEuroCurrency LSParseNumber LSTimeFormat LTrim Left
242syn keyword	cfFunctionName		contained Len ListAppend ListChangeDelims ListContains
243syn keyword	cfFunctionName		contained ListContainsNoCase ListDeleteAt ListFind ListFindNoCase
244syn keyword	cfFunctionName		contained ListFirst ListGetAt ListInsertAt ListLast ListLen
245syn keyword	cfFunctionName		contained ListPrepend ListQualify ListRest ListSetAt ListSort
246syn keyword	cfFunctionName		contained ListToArray ListValueCount ListValueCountNoCase Log Log10
247syn keyword	cfFunctionName		contained Max Mid Min Minute Month MonthAsString Now NumberFormat
248syn keyword	cfFunctionName		contained ParagraphFormat ParseDateTime Pi
249syn keyword	cfFunctionName		contained PreserveSingleQuotes Quarter QueryAddColumn QueryAddRow
250syn keyword	cfFunctionName		contained QueryNew QuerySetCell QuotedValueList REFind REFindNoCase
251syn keyword	cfFunctionName		contained REReplace REReplaceNoCase RJustify RTrim Rand RandRange
252syn keyword	cfFunctionName		contained Randomize ReleaseComObject RemoveChars RepeatString Replace
253syn keyword	cfFunctionName		contained ReplaceList ReplaceNoCase Reverse Right Round Second
254syn keyword	cfFunctionName		contained SendGatewayMessage SetEncoding SetLocale SetProfileString
255syn keyword	cfFunctionName		contained SetVariable Sgn Sin SpanExcluding SpanIncluding Sqr StripCR
256syn keyword	cfFunctionName		contained StructAppend StructClear StructCopy StructCount StructDelete
257syn keyword	cfFunctionName		contained StructFind StructFindKey StructFindValue StructGet
258syn keyword	cfFunctionName		contained StructInsert StructIsEmpty StructKeyArray StructKeyExists
259syn keyword	cfFunctionName		contained StructKeyList StructNew StructSort StructUpdate Tan
260syn keyword	cfFunctionName		contained TimeFormat ToBase64 ToBinary ToScript ToString Trim UCase
261syn keyword	cfFunctionName		contained URLDecode URLEncodedFormat URLSessionFormat Val ValueList
262syn keyword	cfFunctionName		contained Week Wrap WriteOutput XmlChildPos XmlElemNew XmlFormat
263syn keyword	cfFunctionName		contained XmlGetNodeType XmlNew XmlParse XmlSearch XmlTransform
264syn keyword	cfFunctionName		contained XmlValidate Year YesNoFormat
265" ColdFusion 8:
266syn keyword	cfFunctionName		contained AjaxLink AjaxOnLoad ArrayIsDefined BinaryDecode BinaryEncode CharsetDecode CharsetEncode 
267syn keyword	cfFunctionName		contained DecryptBinary DeserializeJSON DotNetToCFType EncryptBinary FileClose FileCopy FileDelete
268syn keyword	cfFunctionName		contained FileIsEOF FileMove FileOpen FileRead FileReadBinary FileReadLine FileSetAccessMode FileSetAttribute
269syn keyword	cfFunctionName		contained FileSetLastModified FileWrite GenerateSecretKey GetGatewayHelper GetAuthUser GetComponentMetaData
270syn keyword	cfFunctionName		contained GetContextRoot GetEncoding GetFileInfo GetLocaleDisplayName GetLocalHostIP GetMetaData
271syn keyword	cfFunctionName		contained GetPageContext GetPrinterInfo GetProfileSections GetReadableImageFormats GetSOAPRequest
272syn keyword	cfFunctionName		contained GetSOAPRequestHeader GetSOAPResponse GetSOAPResponseHeader GetUserRoles GetWriteableImageFormats
273syn keyword	cfFunctionName		contained ImageAddBorder ImageBlur ImageClearRect ImageCopy ImageCrop ImageDrawArc ImageDrawBeveledRect
274syn keyword	cfFunctionName		contained ImageDrawCubicCurve ImageDrawPoint ImageDrawLine ImageDrawLines ImageDrawOval
275syn keyword	cfFunctionName		contained ImageDrawQuadraticCurve ImageDrawRect ImageDrawRoundRect ImageDrawText ImageFlip ImageGetBlob
276syn keyword	cfFunctionName		contained ImageGetBufferedImage ImageGetEXIFMetadata ImageGetEXIFTag ImageGetHeight ImageGetIPTCMetadata
277syn keyword	cfFunctionName		contained ImageGetIPTCTag ImageGetWidth ImageGrayscale ImageInfo ImageNegative ImageNew ImageOverlay
278syn keyword	cfFunctionName		contained ImagePaste ImageRead ImageReadBase64 ImageResize ImageRotate ImageRotateDrawingAxis ImageScaleToFit 
279" ColdFusion 9:
280syn keyword	cfFunctionName		contained ApplicationStop ArrayContains ArrayDelete ArrayFind ArrayFindNoCase IsSpreadsheetFile
281syn keyword	cfFunctionName		contained IsSpreadsheetObject FileSkipBytes Location ObjectLoad SpreadsheetFormatColumn
282syn keyword	cfFunctionName		contained SpreadsheetFormatColumns SpreadsheetFormatRow SpreadsheetFormatRows SpreadsheetGetCellComment
283syn keyword	cfFunctionName		contained CacheGetAllIds CacheGetMetadata CacheGetProperties CacheGet CachePut ObjectSave ORMClearSession
284syn keyword	cfFunctionName		contained ORMCloseSession ORMEvictQueries ORMEvictCollection SpreadsheetGetCellFormula SpreadsheetGetCellValue
285syn keyword	cfFunctionName		contained SpreadsheetInfo SpreadsheetMergeCells SpreadsheetNew CacheRemove CacheSetProperties DirectoryCreate
286syn keyword	cfFunctionName		contained DirectoryDelete DirectoryExists ORMEvictEntity ORMEvictQueries ORMExecuteQuery ORMFlush
287syn keyword	cfFunctionName		contained ORMGetSession SpreadsheetRead SpreadsheetReadBinary SpreadsheetSetActiveSheetNumber
288syn keyword	cfFunctionName		contained SpreadsheetSetCellComment SpreadsheetSetCellFormula DirectoryList DirectoryRename EntityDelete
289syn keyword	cfFunctionName		contained EntityLoad EntityLoadByExample ORMGetSessionFactory ORMReload ObjectEquals SpreadsheetAddColumn
290syn keyword	cfFunctionName		contained SpreadsheetAddFreezePane SpreadsheetSetCellValue SpreadsheetSetActiveSheet SpreadsheetSetFooter
291syn keyword	cfFunctionName		contained SpreadsheetSetHeader SpreadsheetSetColumnWidth EntityLoadByPK EntityMerge EntityNew EntityReload
292syn keyword	cfFunctionName		contained EntitySave SpreadsheetAddImage SpreadsheetAddInfo SpreadsheetAddRow SpreadsheetAddRows
293syn keyword	cfFunctionName		contained SpreadsheetAddSplitPane SpreadsheetShiftColumns SpreadsheetShiftRows SpreadsheetSetRowHeight
294syn keyword	cfFunctionName		contained SpreadsheetWrite Trace FileDelete FileSeek FileWriteLine GetFunctionCalledName GetVFSMetaData IsIPv6
295syn keyword	cfFunctionName		contained IsNull SpreadsheetCreateSheet SpreadsheetDeleteColumn SpreadsheetDeleteColumns SpreadsheetDeleteRow
296syn keyword	cfFunctionName		contained SpreadsheetDeleteRows SpreadsheetFormatCell TransactionCommit TransactionRollback
297syn keyword	cfFunctionName		contained TransactionSetSavePoint ThreadTerminate ThreadJoin Throw Writedump Writelog 
298
299" Deprecated or obsoleted tags and functions.
300syn keyword	cfDeprecatedTag		contained cfauthenticate cfimpersonate cfgraph cfgraphdata
301syn keyword	cfDeprecatedTag		contained cfservlet cfservletparam cftextinput
302syn keyword	cfDeprecatedTag		contained cfinternaladminsecurity cfnewinternaladminsecurity
303syn keyword	cfDeprecatedFunction	contained GetK2ServerDocCount GetK2ServerDocCountLimit GetTemplatePath
304syn keyword	cfDeprecatedFunction	contained IsK2ServerABroker IsK2ServerDocCountExceeded IsK2ServerOnline
305syn keyword	cfDeprecatedFunction	contained ParameterExists AuthenticatedContext AuthenticatedUser
306syn keyword	cfDeprecatedFunction	contained isAuthenticated isAuthorized isProtected
307
308" Add to the HTML clusters.
309syn cluster	htmlTagNameCluster	add=cfTagName,cfCustomTagName,cfDeprecatedTag
310syn cluster	htmlArgCluster		add=cfArg,cfHashRegion,cfScope
311syn cluster	htmlPreproc		add=cfHashRegion
312
313syn cluster	cfExpressionCluster	contains=cfFunctionName,cfScope,@cfOperatorCluster,cfScriptStringD,cfScriptStringS,cfScriptNumber,cfBool,cfComment
314
315" Evaluation; skip strings ( this helps with cases like nested IIf() )
316"		containedin to add to the TOP of cfOutputRegion.
317syn region	cfHashRegion		start=+#+ skip=+"[^"]*"\|'[^']*'+ end=+#+ contained containedin=cfOutputRegion contains=@cfExpressionCluster,cfScriptParenError
318
319" Hashmarks are significant inside cfoutput tags.
320" cfoutput tags may be nested indefinitely.
321syn region	cfOutputRegion		matchgroup=NONE transparent start=+<cfoutput>+ end=+</cfoutput>+ contains=TOP
322
323" <cfset>, <cfif>, <cfelseif>, <cfreturn> are analogous to hashmarks (implicit
324" evaluation) and have 'var'
325syn region	cfSetRegion		start="<cfset\>" start="<cfreturn\>" start="<cfelseif\>" start="<cfif\>" end='>' keepend contains=@cfExpressionCluster,cfSetLHSRegion,cfSetTagEnd,cfScriptStatement
326syn region	cfSetLHSRegion		contained start="<cfreturn" start="<cfelseif" start="<cfif" start="<cfset" end="." keepend contains=cfTagName,htmlTag
327syn match	cfSetTagEnd		contained '>'
328
329" CF comments: similar to SGML comments, but can be nested.
330syn region	cfComment		start='<!---' end='--->' contains=cfCommentTodo,cfComment
331syn keyword	cfCommentTodo		contained TODO FIXME XXX TBD WTF 
332
333" CFscript 
334" TODO better support for new component/function def syntax
335" TODO better support for 'new'
336" TODO highlight metadata (@ ...) inside comments.
337syn match	cfScriptLineComment	contained "\/\/.*$" contains=cfCommentTodo
338syn region	cfScriptComment		contained start="/\*"	end="\*/" contains=cfCommentTodo
339syn match	cfScriptBraces		contained "[{}]"
340syn keyword	cfScriptStatement	contained return var
341" in CF, quotes are escaped by doubling
342syn region	cfScriptStringD		contained start=+"+	skip=+\\\\\|""+	end=+"+	extend contains=@htmlPreproc,cfHashRegion
343syn region	cfScriptStringS		contained start=+'+	skip=+\\\\\|''+	end=+'+	extend contains=@htmlPreproc,cfHashRegion
344syn match	cfScriptNumber		contained "\<\d\+\>"
345syn keyword	cfScriptConditional	contained if else
346syn keyword	cfScriptRepeat		contained while for in
347syn keyword	cfScriptBranch		contained break switch case default try catch continue finally
348syn keyword	cfScriptKeyword		contained function
349" argumentCollection is a special argument to function calls
350syn keyword	cfScriptSpecial		contained argumentcollection
351" ColdFusion 9:
352syn keyword	cfScriptStatement	contained new import
353" CFscript equivalents of some tags
354syn keyword	cfScriptKeyword		contained abort component exit import include
355syn keyword	cfScriptKeyword		contained interface param pageencoding property rethrow thread transaction
356" function/component syntax
357syn keyword	cfScriptSpecial		contained required extends
358
359
360syn cluster	cfScriptCluster	contains=cfScriptParen,cfScriptLineComment,cfScriptComment,cfScriptStringD,cfScriptStringS,cfScriptFunction,cfScriptNumber,cfScriptRegexpString,cfScriptBoolean,cfScriptBraces,cfHashRegion,cfFunctionName,cfDeprecatedFunction,cfScope,@cfOperatorCluster,cfScriptConditional,cfScriptRepeat,cfScriptBranch,@cfExpressionCluster,cfScriptStatement,cfScriptSpecial,cfScriptKeyword
361
362" Errors caused by wrong parenthesis; skip strings
363syn region	cfScriptParen	contained transparent skip=+"[^"]*"\|'[^']*'+ start=+(+ end=+)+ contains=@cfScriptCluster
364syn match	cfScrParenError	contained +)+
365
366syn region	cfscriptBlock	matchgroup=NONE start="<cfscript>"	end="<\/cfscript>"me=s-1 keepend contains=@cfScriptCluster,cfscriptTag,cfScrParenError
367syn region	cfscriptTag	contained start='<cfscript' end='>' keepend contains=cfTagName,htmlTag
368
369" CFML
370syn cluster	cfmlCluster	contains=cfComment,@htmlTagNameCluster,@htmlPreproc,cfSetRegion,cfscriptBlock,cfOutputRegion
371
372" cfquery = sql syntax
373if exists("b:current_syntax")
374  unlet b:current_syntax
375endif
376syn include @cfSql $VIMRUNTIME/syntax/sql.vim
377unlet b:current_syntax
378syn region	cfqueryTag	contained start=+<cfquery+ end=+>+ keepend contains=cfTagName,htmlTag
379syn region	cfSqlregion	start=+<cfquery\_[^>]*>+ keepend end=+</cfquery>+me=s-1 matchgroup=NONE contains=@cfSql,cfComment,@htmlTagNameCluster,cfqueryTag,cfHashRegion
380
381" Define the highlighting.
382command -nargs=+ CfHiLink hi def link <args>
383
384if exists("d_noinclude_html")
385  " The default html-style highlighting copied from html.vim.
386  CfHiLink htmlTag		Function
387  CfHiLink htmlEndTag		Identifier
388  CfHiLink htmlArg		Type
389  CfHiLink htmlTagName		htmlStatement
390  CfHiLink htmlValue		String
391  CfHiLink htmlPreProc		PreProc
392  CfHiLink htmlString		String
393  CfHiLink htmlStatement	Statement
394  CfHiLink htmlValue		String
395  CfHiLink htmlTagError		htmlError
396  CfHiLink htmlError		Error
397endif
398
399CfHiLink cfTagName		Statement
400CfHiLink cfCustomTagName	Statement
401CfHiLink cfArg			Type
402CfHiLink cfFunctionName		Function
403CfHiLink cfHashRegion		PreProc
404CfHiLink cfComment		Comment
405CfHiLink cfCommentTodo		Todo
406CfHiLink cfOperator		Operator
407CfHiLink cfOperatorMatch	Operator
408CfHiLink cfScope		Title
409CfHiLink cfBool			Constant
410
411CfHiLink cfscriptBlock		Special
412CfHiLink cfscriptTag		htmlTag
413CfHiLink cfSetRegion		PreProc
414CfHiLink cfSetLHSRegion		htmlTag
415CfHiLink cfSetTagEnd		htmlTag
416
417CfHiLink cfScriptLineComment	Comment
418CfHiLink cfScriptComment	Comment
419CfHiLink cfScriptStringS	String
420CfHiLink cfScriptStringD	String
421CfHiLink cfScriptNumber		cfScriptValue
422CfHiLink cfScriptConditional	Conditional
423CfHiLink cfScriptRepeat		Repeat
424CfHiLink cfScriptBranch		Conditional
425CfHiLink cfScriptSpecial	Type
426CfHiLink cfScriptStatement	Statement
427CfHiLink cfScriptBraces		Function
428CfHiLink cfScriptKeyword	Function
429CfHiLink cfScriptError		Error
430CfHiLink cfDeprecatedTag	Error
431CfHiLink cfDeprecatedFunction	Error
432CfHiLink cfScrParenError	cfScriptError
433
434CfHiLink cfqueryTag		htmlTag
435
436delcommand CfHiLink
437
438let b:current_syntax = "cf"
439
440" vim: nowrap sw=2 ts=8 noet
441