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