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