xref: /vim-8.2.3635/runtime/syntax/cf.vim (revision 2f058491)
1071d4279SBram Moolenaar" Vim syntax file
2*2f058491SBram Moolenaar"
3*2f058491SBram Moolenaar" Language:     CFML (ColdFusion)
4*2f058491SBram Moolenaar" Author:       Ernst M. van der Linden <[email protected]>
5*2f058491SBram Moolenaar" License:      The MIT License (MIT)
6*2f058491SBram Moolenaar"
7*2f058491SBram Moolenaar" Maintainer:   Ernst M. van der Linden <[email protected]>
8*2f058491SBram Moolenaar" URL:          https://github.com/ernstvanderlinden/vim-coldfusion
9*2f058491SBram Moolenaar" Last Change:  2017 Nov 28
10*2f058491SBram Moolenaar"
11a5792f58SBram Moolenaar" Filenames:    *.cfc *.cfm
12071d4279SBram Moolenaar
13*2f058491SBram Moolenaar" Quit when a syntax file was already loaded.
145e3dae8bSBram Moolenaarif exists("b:current_syntax")
15071d4279SBram Moolenaar  finish
16071d4279SBram Moolenaarendif
17071d4279SBram Moolenaar
18*2f058491SBram Moolenaar" Using line continuation here.
19*2f058491SBram Moolenaarlet s:cpo_save=&cpo
20*2f058491SBram Moolenaarset cpo-=C
215e3dae8bSBram Moolenaar
22*2f058491SBram Moolenaarsy sync fromstart
23*2f058491SBram Moolenaar" 20171126: disabled as we have fast computers now.
24*2f058491SBram Moolenaar"sy sync maxlines=2000
25*2f058491SBram Moolenaarsy case ignore
26071d4279SBram Moolenaar
27*2f058491SBram Moolenaar" INCLUDES {{{
28*2f058491SBram Moolenaarsy include @sqlSyntax $VIMRUNTIME/syntax/sql.vim
29*2f058491SBram Moolenaar" 20161010: Disabled include html highlighting as it contains huge keywords
30*2f058491SBram Moolenaar" regex, so it will have impact on performance.  Use own simple SGML tag
31*2f058491SBram Moolenaar" coloring instead.
32*2f058491SBram Moolenaar"runtime! syntax/html.vim
33*2f058491SBram Moolenaar" / INCLUDES }}}
34a5792f58SBram Moolenaar
35*2f058491SBram Moolenaar" NUMBER {{{
36*2f058491SBram Moolenaarsy match cfmlNumber
37*2f058491SBram Moolenaar    \ "\v<\d+>"
38*2f058491SBram Moolenaar" / NUMBER }}}
39a5792f58SBram Moolenaar
40*2f058491SBram Moolenaar" EQUAL SIGN {{{
41*2f058491SBram Moolenaarsy match cfmlEqualSign
42*2f058491SBram Moolenaar    \ "\v\="
43*2f058491SBram Moolenaar" / EQUAL SIGN }}}
445e3dae8bSBram Moolenaar
45*2f058491SBram Moolenaar" BOOLEAN {{{
46*2f058491SBram Moolenaarsy match cfmlBoolean
47*2f058491SBram Moolenaar    \ "\v<(true|false)>"
48*2f058491SBram Moolenaar" / BOOLEAN }}}
49a5792f58SBram Moolenaar
50*2f058491SBram Moolenaar" HASH SURROUNDED {{{
51*2f058491SBram Moolenaarsy region cfmlHashSurround
52*2f058491SBram Moolenaar  \ keepend
53*2f058491SBram Moolenaar  \ oneline
54*2f058491SBram Moolenaar  \ start="#"
55*2f058491SBram Moolenaar  \ end="#"
56*2f058491SBram Moolenaar  \ skip="##"
57*2f058491SBram Moolenaar    \ contains=
58*2f058491SBram Moolenaar      \@cfmlOperator,
59*2f058491SBram Moolenaar      \@cfmlPunctuation,
60*2f058491SBram Moolenaar      \cfmlBoolean,
61*2f058491SBram Moolenaar      \cfmlCoreKeyword,
62*2f058491SBram Moolenaar      \cfmlCoreScope,
63*2f058491SBram Moolenaar      \cfmlCustomKeyword,
64*2f058491SBram Moolenaar      \cfmlCustomScope,
65*2f058491SBram Moolenaar      \cfmlEqualSign,
66*2f058491SBram Moolenaar      \cfmlFunctionName,
67*2f058491SBram Moolenaar      \cfmlNumber
68*2f058491SBram Moolenaar" / HASH SURROUNDED }}}
695e3dae8bSBram Moolenaar
70*2f058491SBram Moolenaar" OPERATOR {{{
71071d4279SBram Moolenaar
72*2f058491SBram Moolenaar" OPERATOR - ARITHMETIC {{{
73*2f058491SBram Moolenaar" +7 -7
74*2f058491SBram Moolenaar" ++i --i
75*2f058491SBram Moolenaar" i++ i--
76*2f058491SBram Moolenaar" + - * / %
77*2f058491SBram Moolenaar" += -= *= /= %=
78*2f058491SBram Moolenaar" ^ mod
79*2f058491SBram Moolenaarsy match cfmlArithmeticOperator
80*2f058491SBram Moolenaar  \ "\v
81*2f058491SBram Moolenaar  \(\+|-)\ze\d
82*2f058491SBram Moolenaar  \|(\+\+|--)\ze\w
83*2f058491SBram Moolenaar  \|\w\zs(\+\+|--)
84*2f058491SBram Moolenaar  \|(\s(
85*2f058491SBram Moolenaar  \(\+|-|\*|\/|\%){1}\={,1}
86*2f058491SBram Moolenaar  \|\^
87*2f058491SBram Moolenaar  \|mod
88*2f058491SBram Moolenaar  \)\s)
89*2f058491SBram Moolenaar  \"
90*2f058491SBram Moolenaar" / OPERATOR - ARITHMETIC }}}
91071d4279SBram Moolenaar
92*2f058491SBram Moolenaar" OPERATOR - BOOLEAN {{{
93*2f058491SBram Moolenaar" not and or xor eqv imp
94*2f058491SBram Moolenaar" ! && ||
95*2f058491SBram Moolenaarsy match cfmlBooleanOperator
96*2f058491SBram Moolenaar  \ "\v\s
97*2f058491SBram Moolenaar  \(not|and|or|xor|eqv|imp
98*2f058491SBram Moolenaar  \|\!|\&\&|\|\|
99*2f058491SBram Moolenaar  \)(\s|\))
100*2f058491SBram Moolenaar  \|\s\!\ze\w
101*2f058491SBram Moolenaar  \"
102*2f058491SBram Moolenaar" / OPERATOR - BOOLEAN }}}
1033577c6faSBram Moolenaar
104*2f058491SBram Moolenaar" OPERATOR - DECISION {{{
105*2f058491SBram Moolenaar"is|equal|eq
106*2f058491SBram Moolenaar"is not|not equal|neq
107*2f058491SBram Moolenaar"contains|does not contain
108*2f058491SBram Moolenaar"greater than|gt
109*2f058491SBram Moolenaar"less than|lt
110*2f058491SBram Moolenaar"greater than or equal to|gte|ge
111*2f058491SBram Moolenaar"less than or equal to|lte|le
112*2f058491SBram Moolenaar"==|!=|>|<|>=|<=
113*2f058491SBram Moolenaarsy match cfmlDecisionOperator
114*2f058491SBram Moolenaar  \ "\v\s
115*2f058491SBram Moolenaar  \(is|equal|eq
116*2f058491SBram Moolenaar  \|is not|not equal|neq
117*2f058491SBram Moolenaar  \|contains|does not contain
118*2f058491SBram Moolenaar  \|greater than|gt
119*2f058491SBram Moolenaar  \|less than|lt
120*2f058491SBram Moolenaar  \|greater than or equal to|gte|ge
121*2f058491SBram Moolenaar  \|less than or equal to|lte|le
122*2f058491SBram Moolenaar  \|(!|\<|\>|\=){1}\=
123*2f058491SBram Moolenaar  \|\<
124*2f058491SBram Moolenaar  \|\>
125*2f058491SBram Moolenaar  \)\s"
126*2f058491SBram Moolenaar" / OPERATOR - DECISION }}}
127071d4279SBram Moolenaar
128*2f058491SBram Moolenaar" OPERATOR - STRING {{{
129*2f058491SBram Moolenaar" &
130*2f058491SBram Moolenaar" &=
131*2f058491SBram Moolenaarsy match cfmlStringOperator
132*2f058491SBram Moolenaar    \ "\v\s\&\={,1}\s"
133*2f058491SBram Moolenaar" / OPERATOR - STRING }}}
134071d4279SBram Moolenaar
135*2f058491SBram Moolenaar" OPERATOR - TERNARY {{{
136*2f058491SBram Moolenaar" ? :
137*2f058491SBram Moolenaarsy match cfmlTernaryOperator
138*2f058491SBram Moolenaar  \ "\v\s
139*2f058491SBram Moolenaar  \\?|\:
140*2f058491SBram Moolenaar  \\s"
141*2f058491SBram Moolenaar" / OPERATOR - TERNARY }}}
142a5792f58SBram Moolenaar
143*2f058491SBram Moolenaarsy cluster cfmlOperator
144*2f058491SBram Moolenaar  \ contains=
145*2f058491SBram Moolenaar    \cfmlArithmeticOperator,
146*2f058491SBram Moolenaar    \cfmlBooleanOperator,
147*2f058491SBram Moolenaar    \cfmlDecisionOperator,
148*2f058491SBram Moolenaar    \cfmlStringOperator,
149*2f058491SBram Moolenaar    \cfmlTernaryOperator
150*2f058491SBram Moolenaar" / OPERATOR }}}
1515e3dae8bSBram Moolenaar
152*2f058491SBram Moolenaar" PARENTHESIS {{{
153*2f058491SBram Moolenaarsy cluster cfmlParenthesisRegionContains
154*2f058491SBram Moolenaar  \ contains=
155*2f058491SBram Moolenaar    \@cfmlAttribute,
156*2f058491SBram Moolenaar    \@cfmlComment,
157*2f058491SBram Moolenaar    \@cfmlFlowStatement,
158*2f058491SBram Moolenaar    \@cfmlOperator,
159*2f058491SBram Moolenaar    \@cfmlPunctuation,
160*2f058491SBram Moolenaar    \cfmlBoolean,
161*2f058491SBram Moolenaar    \cfmlBrace,
162*2f058491SBram Moolenaar    \cfmlCoreKeyword,
163*2f058491SBram Moolenaar    \cfmlCoreScope,
164*2f058491SBram Moolenaar    \cfmlCustomKeyword,
165*2f058491SBram Moolenaar    \cfmlCustomScope,
166*2f058491SBram Moolenaar    \cfmlEqualSign,
167*2f058491SBram Moolenaar    \cfmlFunctionName,
168*2f058491SBram Moolenaar    \cfmlNumber,
169*2f058491SBram Moolenaar    \cfmlStorageKeyword,
170*2f058491SBram Moolenaar    \cfmlStorageType
171a5792f58SBram Moolenaar
172*2f058491SBram Moolenaarsy region cfmlParenthesisRegion1
173*2f058491SBram Moolenaar  \ extend
174*2f058491SBram Moolenaar  \ matchgroup=cfmlParenthesis1
175*2f058491SBram Moolenaar  \ transparent
176*2f058491SBram Moolenaar  \ start=/(/
177*2f058491SBram Moolenaar  \ end=/)/
178*2f058491SBram Moolenaar  \ contains=
179*2f058491SBram Moolenaar    \cfmlParenthesisRegion2,
180*2f058491SBram Moolenaar    \@cfmlParenthesisRegionContains
181*2f058491SBram Moolenaarsy region cfmlParenthesisRegion2
182*2f058491SBram Moolenaar  \ matchgroup=cfmlParenthesis2
183*2f058491SBram Moolenaar  \ transparent
184*2f058491SBram Moolenaar  \ start=/(/
185*2f058491SBram Moolenaar  \ end=/)/
186*2f058491SBram Moolenaar  \ contains=
187*2f058491SBram Moolenaar    \cfmlParenthesisRegion3,
188*2f058491SBram Moolenaar    \@cfmlParenthesisRegionContains
189*2f058491SBram Moolenaarsy region cfmlParenthesisRegion3
190*2f058491SBram Moolenaar  \ matchgroup=cfmlParenthesis3
191*2f058491SBram Moolenaar  \ transparent
192*2f058491SBram Moolenaar  \ start=/(/
193*2f058491SBram Moolenaar  \ end=/)/
194*2f058491SBram Moolenaar  \ contains=
195*2f058491SBram Moolenaar    \cfmlParenthesisRegion1,
196*2f058491SBram Moolenaar    \@cfmlParenthesisRegionContains
197*2f058491SBram Moolenaarsy cluster cfmlParenthesisRegion
198*2f058491SBram Moolenaar  \ contains=
199*2f058491SBram Moolenaar    \cfmlParenthesisRegion1,
200*2f058491SBram Moolenaar    \cfmlParenthesisRegion2,
201*2f058491SBram Moolenaar    \cfmlParenthesisRegion3
202*2f058491SBram Moolenaar" / PARENTHESIS }}}
203a5792f58SBram Moolenaar
204*2f058491SBram Moolenaar" BRACE {{{
205*2f058491SBram Moolenaarsy match cfmlBrace
206*2f058491SBram Moolenaar    \ "{\|}"
207a5792f58SBram Moolenaar
208*2f058491SBram Moolenaarsy region cfmlBraceRegion
209*2f058491SBram Moolenaar  \ extend
210*2f058491SBram Moolenaar  \ fold
211*2f058491SBram Moolenaar  \ keepend
212*2f058491SBram Moolenaar  \ transparent
213*2f058491SBram Moolenaar  \ start="{"
214*2f058491SBram Moolenaar  \ end="}"
215*2f058491SBram Moolenaar" / BRACE }}}
216a5792f58SBram Moolenaar
217*2f058491SBram Moolenaar" PUNCTUATION {{{
2185e3dae8bSBram Moolenaar
219*2f058491SBram Moolenaar" PUNCTUATION - BRACKET {{{
220*2f058491SBram Moolenaarsy match cfmlBracket
221*2f058491SBram Moolenaar  \ "\(\[\|\]\)"
222*2f058491SBram Moolenaar  \ contained
223*2f058491SBram Moolenaar" / PUNCTUATION - BRACKET }}}
224a5792f58SBram Moolenaar
225*2f058491SBram Moolenaar" PUNCTUATION - CHAR {{{
226*2f058491SBram Moolenaarsy match cfmlComma ","
227*2f058491SBram Moolenaarsy match cfmlDot "\."
228*2f058491SBram Moolenaarsy match cfmlSemiColon ";"
229a5792f58SBram Moolenaar
230*2f058491SBram Moolenaar" / PUNCTUATION - CHAR }}}
231071d4279SBram Moolenaar
232*2f058491SBram Moolenaar" PUNCTUATION - QUOTE {{{
233*2f058491SBram Moolenaarsy region cfmlSingleQuotedValue
234*2f058491SBram Moolenaar  \ matchgroup=cfmlSingleQuote
235*2f058491SBram Moolenaar  \ start=/'/
236*2f058491SBram Moolenaar  \ skip=/''/
237*2f058491SBram Moolenaar  \ end=/'/
238*2f058491SBram Moolenaar  \ contains=
239*2f058491SBram Moolenaar    \cfmlHashSurround
2403577c6faSBram Moolenaar
241*2f058491SBram Moolenaarsy region cfmlDoubleQuotedValue
242*2f058491SBram Moolenaar  \ matchgroup=cfmlDoubleQuote
243*2f058491SBram Moolenaar  \ start=/"/
244*2f058491SBram Moolenaar  \ skip=/""/
245*2f058491SBram Moolenaar  \ end=/"/
246*2f058491SBram Moolenaar  \ contains=
247*2f058491SBram Moolenaar    \cfmlHashSurround
2483577c6faSBram Moolenaar
249*2f058491SBram Moolenaarsy cluster cfmlQuotedValue
250*2f058491SBram Moolenaar  \ contains=
251*2f058491SBram Moolenaar    \cfmlDoubleQuotedValue,
252*2f058491SBram Moolenaar    \cfmlSingleQuotedValue
2535e3dae8bSBram Moolenaar
254*2f058491SBram Moolenaarsy cluster cfmlQuote
255*2f058491SBram Moolenaar  \ contains=
256*2f058491SBram Moolenaar    \cfmlDoubleQuote,
257*2f058491SBram Moolenaar    \cfmlSingleQuote
258*2f058491SBram Moolenaar" / PUNCTUATION - QUOTE }}}
259071d4279SBram Moolenaar
260*2f058491SBram Moolenaarsy cluster cfmlPunctuation
261*2f058491SBram Moolenaar  \ contains=
262*2f058491SBram Moolenaar    \@cfmlQuote,
263*2f058491SBram Moolenaar    \@cfmlQuotedValue,
264*2f058491SBram Moolenaar    \cfmlBracket,
265*2f058491SBram Moolenaar    \cfmlComma,
266*2f058491SBram Moolenaar    \cfmlDot,
267*2f058491SBram Moolenaar    \cfmlSemiColon
268a5792f58SBram Moolenaar
269*2f058491SBram Moolenaar" / PUNCTUATION }}}
270a5792f58SBram Moolenaar
271*2f058491SBram Moolenaar" TAG START AND END {{{
272*2f058491SBram Moolenaar" tag start
273*2f058491SBram Moolenaar" <cf...>
274*2f058491SBram Moolenaar" s^^   e
275*2f058491SBram Moolenaarsy region cfmlTagStart
276*2f058491SBram Moolenaar  \ keepend
277*2f058491SBram Moolenaar  \ transparent
278*2f058491SBram Moolenaar  \ start="\c<cf_*"
279*2f058491SBram Moolenaar  \ end=">"
280*2f058491SBram Moolenaar\ contains=
281*2f058491SBram Moolenaar  \@cfmlAttribute,
282*2f058491SBram Moolenaar  \@cfmlComment,
283*2f058491SBram Moolenaar  \@cfmlOperator,
284*2f058491SBram Moolenaar  \@cfmlParenthesisRegion,
285*2f058491SBram Moolenaar  \@cfmlPunctuation,
286*2f058491SBram Moolenaar  \@cfmlQuote,
287*2f058491SBram Moolenaar  \@cfmlQuotedValue,
288*2f058491SBram Moolenaar  \cfmlAttrEqualSign,
289*2f058491SBram Moolenaar  \cfmlBoolean,
290*2f058491SBram Moolenaar  \cfmlBrace,
291*2f058491SBram Moolenaar  \cfmlCoreKeyword,
292*2f058491SBram Moolenaar  \cfmlCoreScope,
293*2f058491SBram Moolenaar  \cfmlCustomKeyword,
294*2f058491SBram Moolenaar  \cfmlCustomScope,
295*2f058491SBram Moolenaar  \cfmlEqualSign,
296*2f058491SBram Moolenaar  \cfmlFunctionName,
297*2f058491SBram Moolenaar  \cfmlNumber,
298*2f058491SBram Moolenaar  \cfmlStorageKeyword,
299*2f058491SBram Moolenaar  \cfmlStorageType,
300*2f058491SBram Moolenaar  \cfmlTagBracket,
301*2f058491SBram Moolenaar  \cfmlTagName
302071d4279SBram Moolenaar
303*2f058491SBram Moolenaar" tag end
304*2f058491SBram Moolenaar" </cf...>
305*2f058491SBram Moolenaar" s^^^   e
306*2f058491SBram Moolenaarsy match cfmlTagEnd
307*2f058491SBram Moolenaar  \ transparent
308*2f058491SBram Moolenaar  \ "\c</cf_*[^>]*>"
309*2f058491SBram Moolenaar  \ contains=
310*2f058491SBram Moolenaar    \cfmlTagBracket,
311*2f058491SBram Moolenaar    \cfmlTagName
312071d4279SBram Moolenaar
313*2f058491SBram Moolenaar" tag bracket
314*2f058491SBram Moolenaar" </...>
315*2f058491SBram Moolenaar" ^^   ^
316*2f058491SBram Moolenaarsy match cfmlTagBracket
317*2f058491SBram Moolenaar  \ contained
318*2f058491SBram Moolenaar  \ "\(<\|>\|\/\)"
319071d4279SBram Moolenaar
320*2f058491SBram Moolenaar" tag name
321*2f058491SBram Moolenaar" <cf...>
322*2f058491SBram Moolenaar"  s^^^e
323*2f058491SBram Moolenaarsy match cfmlTagName
324*2f058491SBram Moolenaar  \ contained
325*2f058491SBram Moolenaar  \ "\v<\/*\zs\ccf\w*"
326*2f058491SBram Moolenaar" / TAG START AND END }}}
327*2f058491SBram Moolenaar
328*2f058491SBram Moolenaar" ATTRIBUTE NAME AND VALUE {{{
329*2f058491SBram Moolenaarsy match cfmlAttrName
330*2f058491SBram Moolenaar  \ contained
331*2f058491SBram Moolenaar  \ "\v(var\s)@<!\w+\ze\s*\=([^\=])+"
332*2f058491SBram Moolenaar
333*2f058491SBram Moolenaarsy match cfmlAttrValue
334*2f058491SBram Moolenaar  \ contained
335*2f058491SBram Moolenaar  \ "\v(\=\"*)\zs\s*\w*"
336*2f058491SBram Moolenaar
337*2f058491SBram Moolenaarsy match cfmlAttrEqualSign
338*2f058491SBram Moolenaar  \ contained
339*2f058491SBram Moolenaar  \ "\v\="
340*2f058491SBram Moolenaar
341*2f058491SBram Moolenaarsy cluster cfmlAttribute
342*2f058491SBram Moolenaar\ contains=
343*2f058491SBram Moolenaar  \@cfmlQuotedValue,
344*2f058491SBram Moolenaar  \cfmlAttrEqualSign,
345*2f058491SBram Moolenaar  \cfmlAttrName,
346*2f058491SBram Moolenaar  \cfmlAttrValue,
347*2f058491SBram Moolenaar  \cfmlCoreKeyword,
348*2f058491SBram Moolenaar  \cfmlCoreScope
349*2f058491SBram Moolenaar" / ATTRIBUTE NAME AND VALUE }}}
350*2f058491SBram Moolenaar
351*2f058491SBram Moolenaar" TAG REGION AND FOLDING {{{
352*2f058491SBram Moolenaar
353*2f058491SBram Moolenaar" CFCOMPONENT REGION AND FOLD {{{
354*2f058491SBram Moolenaar" <cfcomponent
355*2f058491SBram Moolenaar" s^^^^^^^^^^^
356*2f058491SBram Moolenaar" </cfcomponent>
357*2f058491SBram Moolenaar" ^^^^^^^^^^^^^e
358*2f058491SBram Moolenaarsy region cfmlComponentTagRegion
359*2f058491SBram Moolenaar  \ fold
360*2f058491SBram Moolenaar  \ keepend
361*2f058491SBram Moolenaar  \ transparent
362*2f058491SBram Moolenaar  \ start="\c<cfcomponent"
363*2f058491SBram Moolenaar  \ end="\c</cfcomponent>"
364*2f058491SBram Moolenaar
365*2f058491SBram Moolenaar" / CFCOMPONENT REGION AND FOLD }}}
366*2f058491SBram Moolenaar
367*2f058491SBram Moolenaar" CFFUNCTION REGION AND FOLD {{{
368*2f058491SBram Moolenaar" <cffunction
369*2f058491SBram Moolenaar" s^^^^^^^^^^
370*2f058491SBram Moolenaar" </cffunction>
371*2f058491SBram Moolenaar" ^^^^^^^^^^^^e
372*2f058491SBram Moolenaarsy region cfmlFunctionTagRegion
373*2f058491SBram Moolenaar  \ fold
374*2f058491SBram Moolenaar  \ keepend
375*2f058491SBram Moolenaar  \ transparent
376*2f058491SBram Moolenaar  \ start="\c<cffunction"
377*2f058491SBram Moolenaar  \ end="\c</cffunction>"
378*2f058491SBram Moolenaar" / CFFUNCTION REGION AND FOLD }}}
379*2f058491SBram Moolenaar
380*2f058491SBram Moolenaar" CFIF REGION AND FOLD {{{
381*2f058491SBram Moolenaar" <cfif
382*2f058491SBram Moolenaar" s^^^^
383*2f058491SBram Moolenaar" </cfif>
384*2f058491SBram Moolenaar" ^^^^^^e
385*2f058491SBram Moolenaarsy region cfmlIfTagRegion
386*2f058491SBram Moolenaar  \ fold
387*2f058491SBram Moolenaar  \ keepend
388*2f058491SBram Moolenaar  \ transparent
389*2f058491SBram Moolenaar  \ start="\c<cfif"
390*2f058491SBram Moolenaar  \ end="\c</cfif>"
391*2f058491SBram Moolenaar" / CFIF REGION AND FOLD }}}
392*2f058491SBram Moolenaar
393*2f058491SBram Moolenaar" CFLOOP REGION AND FOLD {{{
394*2f058491SBram Moolenaar" <cfloop
395*2f058491SBram Moolenaar" s^^^^^^
396*2f058491SBram Moolenaar" </cfloop>
397*2f058491SBram Moolenaar" ^^^^^^^^e
398*2f058491SBram Moolenaarsy region cfmlLoopTagRegion
399*2f058491SBram Moolenaar  \ fold
400*2f058491SBram Moolenaar  \ keepend
401*2f058491SBram Moolenaar  \ transparent
402*2f058491SBram Moolenaar  \ start="\c<cfloop"
403*2f058491SBram Moolenaar  \ end="\c</cfloop>"
404*2f058491SBram Moolenaar" / CFLOOP REGION AND FOLD }}}
405*2f058491SBram Moolenaar
406*2f058491SBram Moolenaar" CFOUTPUT REGION AND FOLD {{{
407*2f058491SBram Moolenaar" <cfoutput
408*2f058491SBram Moolenaar" s^^^^^^^^
409*2f058491SBram Moolenaar" </cfoutput>
410*2f058491SBram Moolenaar" ^^^^^^^^^^e
411*2f058491SBram Moolenaarsy region cfmlOutputTagRegion
412*2f058491SBram Moolenaar  \ fold
413*2f058491SBram Moolenaar  \ keepend
414*2f058491SBram Moolenaar  \ transparent
415*2f058491SBram Moolenaar  \ start="\c<cfoutput"
416*2f058491SBram Moolenaar  \ end="\c</cfoutput>"
417*2f058491SBram Moolenaar" / CFOUTPUT REGION AND FOLD }}}
418*2f058491SBram Moolenaar
419*2f058491SBram Moolenaar" CFQUERY REGION AND FOLD {{{
420*2f058491SBram Moolenaar" <cfquery
421*2f058491SBram Moolenaar" s^^^^^^^
422*2f058491SBram Moolenaar" </cfquery>
423*2f058491SBram Moolenaar" ^^^^^^^^^e
424*2f058491SBram Moolenaar        "\@cfmlSqlStatement,
425*2f058491SBram Moolenaarsy region cfmlQueryTagRegion
426*2f058491SBram Moolenaar  \ fold
427*2f058491SBram Moolenaar  \ keepend
428*2f058491SBram Moolenaar  \ transparent
429*2f058491SBram Moolenaar  \ start="\c<cfquery"
430*2f058491SBram Moolenaar  \ end="\c</cfquery>"
431*2f058491SBram Moolenaar  \ contains=
432*2f058491SBram Moolenaar    \@cfmlSqlStatement,
433*2f058491SBram Moolenaar    \cfmlTagStart,
434*2f058491SBram Moolenaar    \cfmlTagEnd,
435*2f058491SBram Moolenaar    \cfmlTagComment
436*2f058491SBram Moolenaar" / CFQUERY REGION AND FOLD }}}
437*2f058491SBram Moolenaar
438*2f058491SBram Moolenaar" SAVECONTENT REGION AND FOLD {{{
439*2f058491SBram Moolenaar" <savecontent
440*2f058491SBram Moolenaar" s^^^^^^^^^^^
441*2f058491SBram Moolenaar" </savecontent>
442*2f058491SBram Moolenaar" ^^^^^^^^^^^^^e
443*2f058491SBram Moolenaarsy region cfmlSavecontentTagRegion
444*2f058491SBram Moolenaar  \ fold
445*2f058491SBram Moolenaar  \ keepend
446*2f058491SBram Moolenaar  \ transparent
447*2f058491SBram Moolenaar  \ start="\c<cfsavecontent"
448*2f058491SBram Moolenaar  \ end="\c</cfsavecontent>"
449*2f058491SBram Moolenaar" / SAVECONTENT REGION AND FOLD }}}
450*2f058491SBram Moolenaar
451*2f058491SBram Moolenaar" CFSCRIPT REGION AND FOLD {{{
452*2f058491SBram Moolenaar" <cfscript>
453*2f058491SBram Moolenaar" s^^^^^^^^^
454*2f058491SBram Moolenaar" </cfscript>
455*2f058491SBram Moolenaar" ^^^^^^^^^^e
456*2f058491SBram Moolenaar"\cfmlCustomScope,
457*2f058491SBram Moolenaarsy region cfmlScriptTagRegion
458*2f058491SBram Moolenaar  \ fold
459*2f058491SBram Moolenaar  \ keepend
460*2f058491SBram Moolenaar  \ transparent
461*2f058491SBram Moolenaar  \ start="\c<cfscript>"
462*2f058491SBram Moolenaar  \ end="\c</cfscript>"
463*2f058491SBram Moolenaar  \ contains=
464*2f058491SBram Moolenaar    \@cfmlComment,
465*2f058491SBram Moolenaar    \@cfmlFlowStatement,
466*2f058491SBram Moolenaar    \cfmlHashSurround,
467*2f058491SBram Moolenaar    \@cfmlOperator,
468*2f058491SBram Moolenaar    \@cfmlParenthesisRegion,
469*2f058491SBram Moolenaar    \@cfmlPunctuation,
470*2f058491SBram Moolenaar    \cfmlBoolean,
471*2f058491SBram Moolenaar    \cfmlBrace,
472*2f058491SBram Moolenaar    \cfmlCoreKeyword,
473*2f058491SBram Moolenaar    \cfmlCoreScope,
474*2f058491SBram Moolenaar    \cfmlCustomKeyword,
475*2f058491SBram Moolenaar    \cfmlCustomScope,
476*2f058491SBram Moolenaar    \cfmlEqualSign,
477*2f058491SBram Moolenaar    \cfmlFunctionDefinition,
478*2f058491SBram Moolenaar    \cfmlFunctionName,
479*2f058491SBram Moolenaar    \cfmlNumber,
480*2f058491SBram Moolenaar    \cfmlOddFunction,
481*2f058491SBram Moolenaar    \cfmlStorageKeyword,
482*2f058491SBram Moolenaar    \cfmlTagEnd,
483*2f058491SBram Moolenaar    \cfmlTagStart
484*2f058491SBram Moolenaar" / CFSCRIPT REGION AND FOLD }}}
485*2f058491SBram Moolenaar
486*2f058491SBram Moolenaar" CFSWITCH REGION AND FOLD {{{
487*2f058491SBram Moolenaar" <cfswitch
488*2f058491SBram Moolenaar" s^^^^^^^^
489*2f058491SBram Moolenaar" </cfswitch>
490*2f058491SBram Moolenaar" ^^^^^^^^^^e
491*2f058491SBram Moolenaarsy region cfmlSwitchTagRegion
492*2f058491SBram Moolenaar  \ fold
493*2f058491SBram Moolenaar  \ keepend
494*2f058491SBram Moolenaar  \ transparent
495*2f058491SBram Moolenaar  \ start="\c<cfswitch"
496*2f058491SBram Moolenaar  \ end="\c</cfswitch>"
497*2f058491SBram Moolenaar" / CFSWITCH REGION AND FOLD }}}
498*2f058491SBram Moolenaar
499*2f058491SBram Moolenaar" CFTRANSACTION REGION AND FOLD {{{
500*2f058491SBram Moolenaar" <cftransaction
501*2f058491SBram Moolenaar" s^^^^^^^^^^^^^
502*2f058491SBram Moolenaar" </cftransaction>
503*2f058491SBram Moolenaar" ^^^^^^^^^^^^^^^e
504*2f058491SBram Moolenaarsy region cfmlTransactionTagRegion
505*2f058491SBram Moolenaar  \ fold
506*2f058491SBram Moolenaar  \ keepend
507*2f058491SBram Moolenaar  \ transparent
508*2f058491SBram Moolenaar  \ start="\c<cftransaction"
509*2f058491SBram Moolenaar  \ end="\c</cftransaction>"
510*2f058491SBram Moolenaar" / CFTRANSACTION REGION AND FOLD }}}
511*2f058491SBram Moolenaar
512*2f058491SBram Moolenaar" CUSTOM TAG REGION AND FOLD {{{
513*2f058491SBram Moolenaar" <cf_...>
514*2f058491SBram Moolenaar" s^^^   ^
515*2f058491SBram Moolenaar" </cf_...>
516*2f058491SBram Moolenaar" ^^^^^   e
517*2f058491SBram Moolenaarsy region cfmlCustomTagRegion
518*2f058491SBram Moolenaar  \ fold
519*2f058491SBram Moolenaar  \ keepend
520*2f058491SBram Moolenaar  \ transparent
521*2f058491SBram Moolenaar  \ start="\c<cf_[^>]*>"
522*2f058491SBram Moolenaar  \ end="\c</cf_[^>]*>"
523*2f058491SBram Moolenaar" / CUSTOM TAG REGION AND FOLD }}}
524*2f058491SBram Moolenaar
525*2f058491SBram Moolenaar" / TAG REGION AND FOLDING }}}
526*2f058491SBram Moolenaar
527*2f058491SBram Moolenaar" COMMENT {{{
528*2f058491SBram Moolenaar
529*2f058491SBram Moolenaar" COMMENT BLOCK {{{
530*2f058491SBram Moolenaar" /*...*/
531*2f058491SBram Moolenaar" s^   ^e
532*2f058491SBram Moolenaarsy region cfmlCommentBlock
533*2f058491SBram Moolenaar  \ keepend
534*2f058491SBram Moolenaar  \ start="/\*"
535*2f058491SBram Moolenaar  \ end="\*/"
536*2f058491SBram Moolenaar  \ contains=
537*2f058491SBram Moolenaar    \cfmlMetaData
538*2f058491SBram Moolenaar" / COMMENT BLOCK }}}
539*2f058491SBram Moolenaar
540*2f058491SBram Moolenaar" COMMENT LINE {{{
541*2f058491SBram Moolenaar" //...
542*2f058491SBram Moolenaar" s^
543*2f058491SBram Moolenaarsy match cfmlCommentLine
544*2f058491SBram Moolenaar        \ "\/\/.*"
545*2f058491SBram Moolenaar" / COMMENT LINE }}}
546*2f058491SBram Moolenaar
547*2f058491SBram Moolenaarsy cluster cfmlComment
548*2f058491SBram Moolenaar  \ contains=
549*2f058491SBram Moolenaar    \cfmlCommentBlock,
550*2f058491SBram Moolenaar    \cfmlCommentLine
551*2f058491SBram Moolenaar" / COMMENT }}}
552*2f058491SBram Moolenaar
553*2f058491SBram Moolenaar" TAG COMMENT {{{
554*2f058491SBram Moolenaar" <!---...--->
555*2f058491SBram Moolenaar" s^^^^   ^^^e
556*2f058491SBram Moolenaarsy region cfmlTagComment
557*2f058491SBram Moolenaar  \ keepend
558*2f058491SBram Moolenaar    \ start="<!---"
559*2f058491SBram Moolenaar    \ end="--->"
560*2f058491SBram Moolenaar    \ contains=
561*2f058491SBram Moolenaar      \cfmlTagComment
562*2f058491SBram Moolenaar" / TAG COMMENT }}}
563*2f058491SBram Moolenaar
564*2f058491SBram Moolenaar" FLOW STATEMENT {{{
565*2f058491SBram Moolenaar" BRANCH FLOW KEYWORD {{{
566*2f058491SBram Moolenaarsy keyword cfmlBranchFlowKeyword
567*2f058491SBram Moolenaar  \ break
568*2f058491SBram Moolenaar  \ continue
569*2f058491SBram Moolenaar  \ return
570*2f058491SBram Moolenaar
571*2f058491SBram Moolenaar" / BRANCH KEYWORD }}}
572*2f058491SBram Moolenaar
573*2f058491SBram Moolenaar" DECISION FLOW KEYWORD {{{
574*2f058491SBram Moolenaarsy keyword cfmlDecisionFlowKeyword
575*2f058491SBram Moolenaar  \ case
576*2f058491SBram Moolenaar  \ defaultcase
577*2f058491SBram Moolenaar  \ else
578*2f058491SBram Moolenaar  \ if
579*2f058491SBram Moolenaar  \ switch
580*2f058491SBram Moolenaar
581*2f058491SBram Moolenaar" / DECISION FLOW KEYWORD }}}
582*2f058491SBram Moolenaar
583*2f058491SBram Moolenaar" LOOP FLOW KEYWORD {{{
584*2f058491SBram Moolenaarsy keyword cfmlLoopFlowKeyword
585*2f058491SBram Moolenaar  \ do
586*2f058491SBram Moolenaar  \ for
587*2f058491SBram Moolenaar  \ in
588*2f058491SBram Moolenaar  \ while
589*2f058491SBram Moolenaar
590*2f058491SBram Moolenaar" / LOOP FLOW KEYWORD }}}
591*2f058491SBram Moolenaar
592*2f058491SBram Moolenaar" TRY FLOW KEYWORD {{{
593*2f058491SBram Moolenaarsy keyword cfmlTryFlowKeyword
594*2f058491SBram Moolenaar  \ catch
595*2f058491SBram Moolenaar  \ finally
596*2f058491SBram Moolenaar  \ rethrow
597*2f058491SBram Moolenaar  \ throw
598*2f058491SBram Moolenaar  \ try
599*2f058491SBram Moolenaar
600*2f058491SBram Moolenaar" / TRY FLOW KEYWORD }}}
601*2f058491SBram Moolenaar
602*2f058491SBram Moolenaarsy cluster cfmlFlowStatement
603*2f058491SBram Moolenaar  \ contains=
604*2f058491SBram Moolenaar    \cfmlBranchFlowKeyword,
605*2f058491SBram Moolenaar    \cfmlDecisionFlowKeyword,
606*2f058491SBram Moolenaar    \cfmlLoopFlowKeyword,
607*2f058491SBram Moolenaar    \cfmlTryFlowKeyword
608*2f058491SBram Moolenaar
609*2f058491SBram Moolenaar" / FLOW STATEMENT }}}
610*2f058491SBram Moolenaar
611*2f058491SBram Moolenaar" STORAGE KEYWORD {{{
612*2f058491SBram Moolenaarsy keyword cfmlStorageKeyword
613*2f058491SBram Moolenaar    \ var
614*2f058491SBram Moolenaar" / STORAGE KEYWORD }}}
615*2f058491SBram Moolenaar
616*2f058491SBram Moolenaar" STORAGE TYPE {{{
617*2f058491SBram Moolenaarsy match cfmlStorageType
618*2f058491SBram Moolenaar  \ contained
619*2f058491SBram Moolenaar  \ "\v<
620*2f058491SBram Moolenaar    \(any
621*2f058491SBram Moolenaar    \|array
622*2f058491SBram Moolenaar    \|binary
623*2f058491SBram Moolenaar    \|boolean
624*2f058491SBram Moolenaar    \|date
625*2f058491SBram Moolenaar    \|numeric
626*2f058491SBram Moolenaar    \|query
627*2f058491SBram Moolenaar    \|string
628*2f058491SBram Moolenaar    \|struct
629*2f058491SBram Moolenaar    \|uuid
630*2f058491SBram Moolenaar    \|void
631*2f058491SBram Moolenaar    \|xml
632*2f058491SBram Moolenaar  \){1}\ze(\s*\=)@!"
633*2f058491SBram Moolenaar" / STORAGE TYPE }}}
634*2f058491SBram Moolenaar
635*2f058491SBram Moolenaar" CORE KEYWORD {{{
636*2f058491SBram Moolenaarsy match cfmlCoreKeyword
637*2f058491SBram Moolenaar  \ "\v<
638*2f058491SBram Moolenaar    \(new
639*2f058491SBram Moolenaar    \|required
640*2f058491SBram Moolenaar    \)\ze\s"
641*2f058491SBram Moolenaar" / CORE KEYWORD }}}
642*2f058491SBram Moolenaar
643*2f058491SBram Moolenaar" CORE SCOPE {{{
644*2f058491SBram Moolenaarsy match cfmlCoreScope
645*2f058491SBram Moolenaar  \ "\v<
646*2f058491SBram Moolenaar    \(application
647*2f058491SBram Moolenaar    \|arguments
648*2f058491SBram Moolenaar    \|attributes
649*2f058491SBram Moolenaar    \|caller
650*2f058491SBram Moolenaar    \|cfcatch
651*2f058491SBram Moolenaar    \|cffile
652*2f058491SBram Moolenaar    \|cfhttp
653*2f058491SBram Moolenaar    \|cgi
654*2f058491SBram Moolenaar    \|client
655*2f058491SBram Moolenaar    \|cookie
656*2f058491SBram Moolenaar    \|form
657*2f058491SBram Moolenaar    \|local
658*2f058491SBram Moolenaar    \|request
659*2f058491SBram Moolenaar    \|server
660*2f058491SBram Moolenaar    \|session
661*2f058491SBram Moolenaar    \|super
662*2f058491SBram Moolenaar    \|this
663*2f058491SBram Moolenaar    \|thisTag
664*2f058491SBram Moolenaar    \|thread
665*2f058491SBram Moolenaar    \|variables
666*2f058491SBram Moolenaar    \|url
667*2f058491SBram Moolenaar    \){1}\ze(,|\.|\[|\)|\s)"
668*2f058491SBram Moolenaar" / CORE SCOPE }}}
669*2f058491SBram Moolenaar
670*2f058491SBram Moolenaar" SQL STATEMENT {{{
671*2f058491SBram Moolenaarsy cluster cfmlSqlStatement
672*2f058491SBram Moolenaar  \ contains=
673*2f058491SBram Moolenaar    \@cfmlParenthesisRegion,
674*2f058491SBram Moolenaar    \@cfmlQuote,
675*2f058491SBram Moolenaar    \@cfmlQuotedValue,
676*2f058491SBram Moolenaar    \@sqlSyntax,
677*2f058491SBram Moolenaar    \cfmlBoolean,
678*2f058491SBram Moolenaar    \cfmlDot,
679*2f058491SBram Moolenaar    \cfmlEqualSign,
680*2f058491SBram Moolenaar    \cfmlFunctionName,
681*2f058491SBram Moolenaar    \cfmlHashSurround,
682*2f058491SBram Moolenaar    \cfmlNumber
683*2f058491SBram Moolenaar" / SQL STATEMENT }}}
684*2f058491SBram Moolenaar
685*2f058491SBram Moolenaar" TAG IN SCRIPT {{{
686*2f058491SBram Moolenaarsy match cfmlTagNameInScript
687*2f058491SBram Moolenaar    \ "\vcf_*\w+\s*\ze\("
688*2f058491SBram Moolenaar" / TAG IN SCRIPT }}}
689*2f058491SBram Moolenaar
690*2f058491SBram Moolenaar" METADATA {{{
691*2f058491SBram Moolenaarsy region cfmlMetaData
692*2f058491SBram Moolenaar  \ contained
693*2f058491SBram Moolenaar  \ keepend
694*2f058491SBram Moolenaar  \ start="@\w\+"
695*2f058491SBram Moolenaar  \ end="$"
696*2f058491SBram Moolenaar  \ contains=
697*2f058491SBram Moolenaar    \cfmlMetaDataName
698*2f058491SBram Moolenaar
699*2f058491SBram Moolenaarsy match cfmlMetaDataName
700*2f058491SBram Moolenaar    \ contained
701*2f058491SBram Moolenaar    \ "@\w\+"
702*2f058491SBram Moolenaar" / METADATA }}}
703*2f058491SBram Moolenaar
704*2f058491SBram Moolenaar" COMPONENT DEFINITION {{{
705*2f058491SBram Moolenaarsy region cfmlComponentDefinition
706*2f058491SBram Moolenaar  \ start="component"
707*2f058491SBram Moolenaar  \ end="{"me=e-1
708*2f058491SBram Moolenaar  \ contains=
709*2f058491SBram Moolenaar    \@cfmlAttribute,
710*2f058491SBram Moolenaar    \cfmlComponentKeyword
711*2f058491SBram Moolenaar
712*2f058491SBram Moolenaarsy match cfmlComponentKeyword
713*2f058491SBram Moolenaar  \ contained
714*2f058491SBram Moolenaar  \ "\v<component>"
715*2f058491SBram Moolenaar" / COMPONENT DEFINITION }}}
716*2f058491SBram Moolenaar
717*2f058491SBram Moolenaar" INTERFACE DEFINITION {{{
718*2f058491SBram Moolenaarsy match cfmlInterfaceDefinition
719*2f058491SBram Moolenaar  \ "interface\s.*{"me=e-1
720*2f058491SBram Moolenaar  \ contains=
721*2f058491SBram Moolenaar    \cfmlInterfaceKeyword
722*2f058491SBram Moolenaar
723*2f058491SBram Moolenaarsy match cfmlInterfaceKeyword
724*2f058491SBram Moolenaar    \ contained
725*2f058491SBram Moolenaar    \ "\v<interface>"
726*2f058491SBram Moolenaar" / INTERFACE DEFINITION }}}
727*2f058491SBram Moolenaar
728*2f058491SBram Moolenaar" PROPERTY {{{
729*2f058491SBram Moolenaarsy region cfmlProperty
730*2f058491SBram Moolenaar  \ transparent
731*2f058491SBram Moolenaar  \ start="\v<property>"
732*2f058491SBram Moolenaar  \ end=";"me=e-1
733*2f058491SBram Moolenaar  \ contains=
734*2f058491SBram Moolenaar    \@cfmlQuotedValue,
735*2f058491SBram Moolenaar    \cfmlAttrEqualSign,
736*2f058491SBram Moolenaar    \cfmlAttrName,
737*2f058491SBram Moolenaar    \cfmlAttrValue,
738*2f058491SBram Moolenaar    \cfmlPropertyKeyword
739*2f058491SBram Moolenaar
740*2f058491SBram Moolenaarsy match cfmlPropertyKeyword
741*2f058491SBram Moolenaar        \ contained
742*2f058491SBram Moolenaar        \ "\v<property>"
743*2f058491SBram Moolenaar" / PROPERTY }}}
744*2f058491SBram Moolenaar
745*2f058491SBram Moolenaar" FUNCTION DEFINITION {{{
746*2f058491SBram Moolenaarsy match cfmlFunctionDefinition
747*2f058491SBram Moolenaar  \ "\v
748*2f058491SBram Moolenaar    \(<(public|private|package)\s){,1}
749*2f058491SBram Moolenaar    \(<
750*2f058491SBram Moolenaar      \(any
751*2f058491SBram Moolenaar      \|array
752*2f058491SBram Moolenaar      \|binary
753*2f058491SBram Moolenaar      \|boolean
754*2f058491SBram Moolenaar      \|date
755*2f058491SBram Moolenaar      \|numeric
756*2f058491SBram Moolenaar      \|query
757*2f058491SBram Moolenaar      \|string
758*2f058491SBram Moolenaar      \|struct
759*2f058491SBram Moolenaar      \|uuid
760*2f058491SBram Moolenaar      \|void
761*2f058491SBram Moolenaar      \|xml
762*2f058491SBram Moolenaar    \)\s){,1}
763*2f058491SBram Moolenaar  \<function\s\w+\s*\("me=e-1
764*2f058491SBram Moolenaar  \ contains=
765*2f058491SBram Moolenaar    \cfmlFunctionKeyword,
766*2f058491SBram Moolenaar    \cfmlFunctionModifier,
767*2f058491SBram Moolenaar    \cfmlFunctionName,
768*2f058491SBram Moolenaar    \cfmlFunctionReturnType
769*2f058491SBram Moolenaar
770*2f058491SBram Moolenaar" FUNCTION KEYWORD {{{
771*2f058491SBram Moolenaarsy match cfmlFunctionKeyword
772*2f058491SBram Moolenaar  \ contained
773*2f058491SBram Moolenaar  \ "\v<function>"
774*2f058491SBram Moolenaar" / FUNCTION KEYWORD }}}
775*2f058491SBram Moolenaar
776*2f058491SBram Moolenaar" FUNCTION MODIFIER {{{
777*2f058491SBram Moolenaarsy match cfmlFunctionModifier
778*2f058491SBram Moolenaar  \ contained
779*2f058491SBram Moolenaar    \ "\v<
780*2f058491SBram Moolenaar    \(public
781*2f058491SBram Moolenaar    \|private
782*2f058491SBram Moolenaar    \|package
783*2f058491SBram Moolenaar    \)>"
784*2f058491SBram Moolenaar" / FUNCTION MODIFIER }}}
785*2f058491SBram Moolenaar
786*2f058491SBram Moolenaar" FUNCTION RETURN TYPE {{{
787*2f058491SBram Moolenaarsy match cfmlFunctionReturnType
788*2f058491SBram Moolenaar  \ contained
789*2f058491SBram Moolenaar    \ "\v
790*2f058491SBram Moolenaar    \(any
791*2f058491SBram Moolenaar    \|array
792*2f058491SBram Moolenaar    \|binary
793*2f058491SBram Moolenaar    \|boolean
794*2f058491SBram Moolenaar    \|date
795*2f058491SBram Moolenaar    \|numeric
796*2f058491SBram Moolenaar    \|query
797*2f058491SBram Moolenaar    \|string
798*2f058491SBram Moolenaar    \|struct
799*2f058491SBram Moolenaar    \|uuid
800*2f058491SBram Moolenaar    \|void
801*2f058491SBram Moolenaar    \|xml
802*2f058491SBram Moolenaar    \)"
803*2f058491SBram Moolenaar" / FUNCTION RETURN TYPE }}}
804*2f058491SBram Moolenaar
805*2f058491SBram Moolenaar" FUNCTION NAME {{{
806*2f058491SBram Moolenaar" specific regex for core functions decreases performance
807*2f058491SBram Moolenaar" so use the same highlighting for both function types
808*2f058491SBram Moolenaarsy match cfmlFunctionName
809*2f058491SBram Moolenaar    \ "\v<(cf|if|elseif|throw)@!\w+\s*\ze\("
810*2f058491SBram Moolenaar" / FUNCTION NAME }}}
811*2f058491SBram Moolenaar
812*2f058491SBram Moolenaar" / FUNCTION DEFINITION }}}
813*2f058491SBram Moolenaar
814*2f058491SBram Moolenaar" ODD FUNCTION {{{
815*2f058491SBram Moolenaarsy region cfmlOddFunction
816*2f058491SBram Moolenaar  \ transparent
817*2f058491SBram Moolenaar  \ start="\v<
818*2f058491SBram Moolenaar    \(abort
819*2f058491SBram Moolenaar    \|exit
820*2f058491SBram Moolenaar    \|import
821*2f058491SBram Moolenaar    \|include
822*2f058491SBram Moolenaar    \|lock
823*2f058491SBram Moolenaar    \|pageencoding
824*2f058491SBram Moolenaar    \|param
825*2f058491SBram Moolenaar    \|savecontent
826*2f058491SBram Moolenaar    \|thread
827*2f058491SBram Moolenaar    \|transaction
828*2f058491SBram Moolenaar    \){1}"
829*2f058491SBram Moolenaar  \ end="\v(\{|;)"me=e-1
830*2f058491SBram Moolenaar  \ contains=
831*2f058491SBram Moolenaar    \@cfmlQuotedValue,
832*2f058491SBram Moolenaar    \cfmlAttrEqualSign,
833*2f058491SBram Moolenaar    \cfmlAttrName,
834*2f058491SBram Moolenaar    \cfmlAttrValue,
835*2f058491SBram Moolenaar    \cfmlCoreKeyword,
836*2f058491SBram Moolenaar    \cfmlOddFunctionKeyword,
837*2f058491SBram Moolenaar    \cfmlCoreScope
838*2f058491SBram Moolenaar
839*2f058491SBram Moolenaar" ODD FUNCTION KEYWORD {{{
840*2f058491SBram Moolenaarsy match cfmlOddFunctionKeyword
841*2f058491SBram Moolenaar  \ contained
842*2f058491SBram Moolenaar    \ "\v<
843*2f058491SBram Moolenaar    \(abort
844*2f058491SBram Moolenaar    \|exit
845*2f058491SBram Moolenaar    \|import
846*2f058491SBram Moolenaar    \|include
847*2f058491SBram Moolenaar    \|lock
848*2f058491SBram Moolenaar    \|pageencoding
849*2f058491SBram Moolenaar    \|param
850*2f058491SBram Moolenaar    \|savecontent
851*2f058491SBram Moolenaar    \|thread
852*2f058491SBram Moolenaar    \|transaction
853*2f058491SBram Moolenaar    \)\ze(\s|$|;)"
854*2f058491SBram Moolenaar" / ODD FUNCTION KEYWORD }}}
855*2f058491SBram Moolenaar
856*2f058491SBram Moolenaar" / ODD FUNCTION }}}
857*2f058491SBram Moolenaar
858*2f058491SBram Moolenaar" CUSTOM {{{
859*2f058491SBram Moolenaar
860*2f058491SBram Moolenaar" CUSTOM KEYWORD {{{
861*2f058491SBram Moolenaarsy match cfmlCustomKeyword
862*2f058491SBram Moolenaar  \ contained
863*2f058491SBram Moolenaar    \ "\v<
864*2f058491SBram Moolenaar    \(customKeyword1
865*2f058491SBram Moolenaar    \|customKeyword2
866*2f058491SBram Moolenaar    \|customKeyword3
867*2f058491SBram Moolenaar    \)>"
868*2f058491SBram Moolenaar" / CUSTOM KEYWORD }}}
869*2f058491SBram Moolenaar
870*2f058491SBram Moolenaar" CUSTOM SCOPE {{{
871*2f058491SBram Moolenaarsy match cfmlCustomScope
872*2f058491SBram Moolenaar  \ contained
873*2f058491SBram Moolenaar    \ "\v<
874*2f058491SBram Moolenaar    \(prc
875*2f058491SBram Moolenaar    \|rc
876*2f058491SBram Moolenaar    \|event
877*2f058491SBram Moolenaar    \|(\w+Service)
878*2f058491SBram Moolenaar    \){1}\ze(\.|\[)"
879*2f058491SBram Moolenaar" / CUSTOM SCOPE }}}
880*2f058491SBram Moolenaar
881*2f058491SBram Moolenaar" / CUSTOM }}}
882*2f058491SBram Moolenaar
883*2f058491SBram Moolenaar" SGML TAG START AND END {{{
884*2f058491SBram Moolenaar" SGML tag start
885*2f058491SBram Moolenaar" <...>
886*2f058491SBram Moolenaar" s^^^e
887*2f058491SBram Moolenaarsy region cfmlSGMLTagStart
888*2f058491SBram Moolenaar  \ keepend
889*2f058491SBram Moolenaar  \ transparent
890*2f058491SBram Moolenaar  \ start="\v(\<cf)@!\zs\<\w+"
891*2f058491SBram Moolenaar  \ end=">"
892*2f058491SBram Moolenaar  \ contains=
893*2f058491SBram Moolenaar    \@cfmlAttribute,
894*2f058491SBram Moolenaar    \@cfmlComment,
895*2f058491SBram Moolenaar    \@cfmlOperator,
896*2f058491SBram Moolenaar    \@cfmlParenthesisRegion,
897*2f058491SBram Moolenaar    \@cfmlPunctuation,
898*2f058491SBram Moolenaar    \@cfmlQuote,
899*2f058491SBram Moolenaar    \@cfmlQuotedValue,
900*2f058491SBram Moolenaar    \cfmlAttrEqualSign,
901*2f058491SBram Moolenaar    \cfmlBoolean,
902*2f058491SBram Moolenaar    \cfmlBrace,
903*2f058491SBram Moolenaar    \cfmlCoreKeyword,
904*2f058491SBram Moolenaar    \cfmlCoreScope,
905*2f058491SBram Moolenaar    \cfmlCustomKeyword,
906*2f058491SBram Moolenaar    \cfmlCustomScope,
907*2f058491SBram Moolenaar    \cfmlEqualSign,
908*2f058491SBram Moolenaar    \cfmlFunctionName,
909*2f058491SBram Moolenaar    \cfmlNumber,
910*2f058491SBram Moolenaar    \cfmlStorageKeyword,
911*2f058491SBram Moolenaar    \cfmlStorageType,
912*2f058491SBram Moolenaar    \cfmlTagBracket,
913*2f058491SBram Moolenaar    \cfmlSGMLTagName
914*2f058491SBram Moolenaar
915*2f058491SBram Moolenaar" SGML tag end
916*2f058491SBram Moolenaar" </...>
917*2f058491SBram Moolenaar" s^^^^e
918*2f058491SBram Moolenaarsy match cfmlSGMLTagEnd
919*2f058491SBram Moolenaar  \ transparent
920*2f058491SBram Moolenaar  \ "\v(\<\/cf)@!\zs\<\/\w+\>"
921*2f058491SBram Moolenaar  \ contains=
922*2f058491SBram Moolenaar    \cfmlTagBracket,
923*2f058491SBram Moolenaar    \cfmlSGMLTagName
924*2f058491SBram Moolenaar
925*2f058491SBram Moolenaar" SGML tag name
926*2f058491SBram Moolenaar" <...>
927*2f058491SBram Moolenaar" s^^^e
928*2f058491SBram Moolenaarsy match cfmlSGMLTagName
929*2f058491SBram Moolenaar  \ contained
930*2f058491SBram Moolenaar  \ "\v(\<\/*)\zs\w+"
931*2f058491SBram Moolenaar
932*2f058491SBram Moolenaar" / SGML TAG START AND END }}}
933*2f058491SBram Moolenaar
934*2f058491SBram Moolenaar" HIGHLIGHTING {{{
935*2f058491SBram Moolenaar
936*2f058491SBram Moolenaarhi link cfmlNumber Number
937*2f058491SBram Moolenaarhi link cfmlBoolean Boolean
938*2f058491SBram Moolenaarhi link cfmlEqualSign Keyword
939*2f058491SBram Moolenaar" HASH SURROUND
940*2f058491SBram Moolenaarhi link cfmlHash PreProc
941*2f058491SBram Moolenaarhi link cfmlHashSurround PreProc
942*2f058491SBram Moolenaar" OPERATOR
943*2f058491SBram Moolenaarhi link cfmlArithmeticOperator Function
944*2f058491SBram Moolenaarhi link cfmlBooleanOperator Function
945*2f058491SBram Moolenaarhi link cfmlDecisionOperator Function
946*2f058491SBram Moolenaarhi link cfmlStringOperator Function
947*2f058491SBram Moolenaarhi link cfmlTernaryOperator Function
948*2f058491SBram Moolenaar" PARENTHESIS
949*2f058491SBram Moolenaarhi link cfmlParenthesis1 Statement
950*2f058491SBram Moolenaarhi link cfmlParenthesis2 String
951*2f058491SBram Moolenaarhi link cfmlParenthesis3 Delimiter
952*2f058491SBram Moolenaar" BRACE
953*2f058491SBram Moolenaarhi link cfmlBrace PreProc
954*2f058491SBram Moolenaar" PUNCTUATION - BRACKET
955*2f058491SBram Moolenaarhi link cfmlBracket Statement
956*2f058491SBram Moolenaar" PUNCTUATION - CHAR
957*2f058491SBram Moolenaarhi link cfmlComma Comment
958*2f058491SBram Moolenaarhi link cfmlDot Comment
959*2f058491SBram Moolenaarhi link cfmlSemiColon Comment
960*2f058491SBram Moolenaar" PUNCTUATION - QUOTE
961*2f058491SBram Moolenaarhi link cfmlDoubleQuote String
962*2f058491SBram Moolenaarhi link cfmlDoubleQuotedValue String
963*2f058491SBram Moolenaarhi link cfmlSingleQuote String
964*2f058491SBram Moolenaarhi link cfmlSingleQuotedValue String
965*2f058491SBram Moolenaar" TAG START AND END
966*2f058491SBram Moolenaarhi link cfmlTagName Function
967*2f058491SBram Moolenaarhi link cfmlTagBracket Comment
968*2f058491SBram Moolenaar" ATTRIBUTE NAME AND VALUE
969*2f058491SBram Moolenaarhi link cfmlAttrName Type
970*2f058491SBram Moolenaarhi link cfmlAttrValue Special
971*2f058491SBram Moolenaar" COMMENT
972*2f058491SBram Moolenaarhi link cfmlCommentBlock Comment
973*2f058491SBram Moolenaarhi link cfmlCommentLine Comment
974*2f058491SBram Moolenaarhi link cfmlTagComment Comment
975*2f058491SBram Moolenaar" FLOW STATEMENT
976*2f058491SBram Moolenaarhi link cfmlDecisionFlowKeyword Conditional
977*2f058491SBram Moolenaarhi link cfmlLoopFlowKeyword Repeat
978*2f058491SBram Moolenaarhi link cfmlTryFlowKeyword Exception
979*2f058491SBram Moolenaarhi link cfmlBranchFlowKeyword Keyword
980*2f058491SBram Moolenaar" STORAGE KEYWORD
981*2f058491SBram Moolenaarhi link cfmlStorageKeyword Keyword
982*2f058491SBram Moolenaar" STORAGE TYPE
983*2f058491SBram Moolenaarhi link cfmlStorageType Keyword
984*2f058491SBram Moolenaar" CORE KEYWORD
985*2f058491SBram Moolenaarhi link cfmlCoreKeyword PreProc
986*2f058491SBram Moolenaar" CORE SCOPE
987*2f058491SBram Moolenaarhi link cfmlCoreScope Keyword
988*2f058491SBram Moolenaar" TAG IN SCRIPT
989*2f058491SBram Moolenaarhi link cfmlTagNameInScript Function
990*2f058491SBram Moolenaar" METADATA
991*2f058491SBram Moolenaar" meta data value = cfmlMetaData
992*2f058491SBram Moolenaarhi link cfmlMetaData String
993*2f058491SBram Moolenaarhi link cfmlMetaDataName Type
994*2f058491SBram Moolenaar" COMPONENT DEFINITION
995*2f058491SBram Moolenaarhi link cfmlComponentKeyword Keyword
996*2f058491SBram Moolenaar" INTERFACE DEFINITION
997*2f058491SBram Moolenaarhi link cfmlInterfaceKeyword Keyword
998*2f058491SBram Moolenaar" PROPERTY
999*2f058491SBram Moolenaarhi link cfmlPropertyKeyword Keyword
1000*2f058491SBram Moolenaar" FUNCTION DEFINITION
1001*2f058491SBram Moolenaarhi link cfmlFunctionKeyword Keyword
1002*2f058491SBram Moolenaarhi link cfmlFunctionModifier Keyword
1003*2f058491SBram Moolenaarhi link cfmlFunctionReturnType Keyword
1004*2f058491SBram Moolenaarhi link cfmlFunctionName Function
1005*2f058491SBram Moolenaar" ODD FUNCTION
1006*2f058491SBram Moolenaarhi link cfmlOddFunctionKeyword Function
1007*2f058491SBram Moolenaar" CUSTOM
1008*2f058491SBram Moolenaarhi link cfmlCustomKeyword Keyword
1009*2f058491SBram Moolenaarhi link cfmlCustomScope Structure
1010*2f058491SBram Moolenaar" SGML TAG
1011*2f058491SBram Moolenaarhi link cfmlSGMLTagName Ignore
1012*2f058491SBram Moolenaar
1013*2f058491SBram Moolenaar" / HIGHLIGHTING }}}
1014*2f058491SBram Moolenaar
1015*2f058491SBram Moolenaarlet b:current_syntax = "cfml"
1016*2f058491SBram Moolenaar
1017*2f058491SBram Moolenaarlet &cpo = s:cpo_save
1018*2f058491SBram Moolenaarunlet s:cpo_save
1019