1019 lines
18 KiB
VimL
1019 lines
18 KiB
VimL
" Vim syntax file
|
|
"
|
|
" Language: CFML (ColdFusion)
|
|
" Author: Ernst M. van der Linden <ernst.vanderlinden@ernestoz.com>
|
|
" License: The MIT License (MIT)
|
|
"
|
|
" Maintainer: Ernst M. van der Linden <ernst.vanderlinden@ernestoz.com>
|
|
" URL: https://github.com/ernstvanderlinden/vim-coldfusion
|
|
" Last Change: 2017 Nov 28
|
|
"
|
|
" Filenames: *.cfc *.cfm
|
|
|
|
" Quit when a syntax file was already loaded.
|
|
if exists("b:current_syntax")
|
|
finish
|
|
endif
|
|
|
|
" Using line continuation here.
|
|
let s:cpo_save=&cpo
|
|
set cpo-=C
|
|
|
|
sy sync fromstart
|
|
" 20171126: disabled as we have fast computers now.
|
|
"sy sync maxlines=2000
|
|
sy case ignore
|
|
|
|
" INCLUDES {{{
|
|
sy include @sqlSyntax $VIMRUNTIME/syntax/sql.vim
|
|
" 20161010: Disabled include html highlighting as it contains huge keywords
|
|
" regex, so it will have impact on performance. Use own simple SGML tag
|
|
" coloring instead.
|
|
"runtime! syntax/html.vim
|
|
" / INCLUDES }}}
|
|
|
|
" NUMBER {{{
|
|
sy match cfmlNumber
|
|
\ "\v<\d+>"
|
|
" / NUMBER }}}
|
|
|
|
" EQUAL SIGN {{{
|
|
sy match cfmlEqualSign
|
|
\ "\v\="
|
|
" / EQUAL SIGN }}}
|
|
|
|
" BOOLEAN {{{
|
|
sy match cfmlBoolean
|
|
\ "\v<(true|false)>"
|
|
" / BOOLEAN }}}
|
|
|
|
" HASH SURROUNDED {{{
|
|
sy region cfmlHashSurround
|
|
\ keepend
|
|
\ oneline
|
|
\ start="#"
|
|
\ end="#"
|
|
\ skip="##"
|
|
\ contains=
|
|
\@cfmlOperator,
|
|
\@cfmlPunctuation,
|
|
\cfmlBoolean,
|
|
\cfmlCoreKeyword,
|
|
\cfmlCoreScope,
|
|
\cfmlCustomKeyword,
|
|
\cfmlCustomScope,
|
|
\cfmlEqualSign,
|
|
\cfmlFunctionName,
|
|
\cfmlNumber
|
|
" / HASH SURROUNDED }}}
|
|
|
|
" OPERATOR {{{
|
|
|
|
" OPERATOR - ARITHMETIC {{{
|
|
" +7 -7
|
|
" ++i --i
|
|
" i++ i--
|
|
" + - * / %
|
|
" += -= *= /= %=
|
|
" ^ mod
|
|
sy match cfmlArithmeticOperator
|
|
\ "\v
|
|
\(\+|-)\ze\d
|
|
\|(\+\+|--)\ze\w
|
|
\|\w\zs(\+\+|--)
|
|
\|(\s(
|
|
\(\+|-|\*|\/|\%){1}\={,1}
|
|
\|\^
|
|
\|mod
|
|
\)\s)
|
|
\"
|
|
" / OPERATOR - ARITHMETIC }}}
|
|
|
|
" OPERATOR - BOOLEAN {{{
|
|
" not and or xor eqv imp
|
|
" ! && ||
|
|
sy match cfmlBooleanOperator
|
|
\ "\v\s
|
|
\(not|and|or|xor|eqv|imp
|
|
\|\!|\&\&|\|\|
|
|
\)(\s|\))
|
|
\|\s\!\ze\w
|
|
\"
|
|
" / OPERATOR - BOOLEAN }}}
|
|
|
|
" OPERATOR - DECISION {{{
|
|
"is|equal|eq
|
|
"is not|not equal|neq
|
|
"contains|does not contain
|
|
"greater than|gt
|
|
"less than|lt
|
|
"greater than or equal to|gte|ge
|
|
"less than or equal to|lte|le
|
|
"==|!=|>|<|>=|<=
|
|
sy match cfmlDecisionOperator
|
|
\ "\v\s
|
|
\(is|equal|eq
|
|
\|is not|not equal|neq
|
|
\|contains|does not contain
|
|
\|greater than|gt
|
|
\|less than|lt
|
|
\|greater than or equal to|gte|ge
|
|
\|less than or equal to|lte|le
|
|
\|(!|\<|\>|\=){1}\=
|
|
\|\<
|
|
\|\>
|
|
\)\s"
|
|
" / OPERATOR - DECISION }}}
|
|
|
|
" OPERATOR - STRING {{{
|
|
" &
|
|
" &=
|
|
sy match cfmlStringOperator
|
|
\ "\v\s\&\={,1}\s"
|
|
" / OPERATOR - STRING }}}
|
|
|
|
" OPERATOR - TERNARY {{{
|
|
" ? :
|
|
sy match cfmlTernaryOperator
|
|
\ "\v\s
|
|
\\?|\:
|
|
\\s"
|
|
" / OPERATOR - TERNARY }}}
|
|
|
|
sy cluster cfmlOperator
|
|
\ contains=
|
|
\cfmlArithmeticOperator,
|
|
\cfmlBooleanOperator,
|
|
\cfmlDecisionOperator,
|
|
\cfmlStringOperator,
|
|
\cfmlTernaryOperator
|
|
" / OPERATOR }}}
|
|
|
|
" PARENTHESIS {{{
|
|
sy cluster cfmlParenthesisRegionContains
|
|
\ contains=
|
|
\@cfmlAttribute,
|
|
\@cfmlComment,
|
|
\@cfmlFlowStatement,
|
|
\@cfmlOperator,
|
|
\@cfmlPunctuation,
|
|
\cfmlBoolean,
|
|
\cfmlBrace,
|
|
\cfmlCoreKeyword,
|
|
\cfmlCoreScope,
|
|
\cfmlCustomKeyword,
|
|
\cfmlCustomScope,
|
|
\cfmlEqualSign,
|
|
\cfmlFunctionName,
|
|
\cfmlNumber,
|
|
\cfmlStorageKeyword,
|
|
\cfmlStorageType
|
|
|
|
sy region cfmlParenthesisRegion1
|
|
\ extend
|
|
\ matchgroup=cfmlParenthesis1
|
|
\ transparent
|
|
\ start=/(/
|
|
\ end=/)/
|
|
\ contains=
|
|
\cfmlParenthesisRegion2,
|
|
\@cfmlParenthesisRegionContains
|
|
sy region cfmlParenthesisRegion2
|
|
\ matchgroup=cfmlParenthesis2
|
|
\ transparent
|
|
\ start=/(/
|
|
\ end=/)/
|
|
\ contains=
|
|
\cfmlParenthesisRegion3,
|
|
\@cfmlParenthesisRegionContains
|
|
sy region cfmlParenthesisRegion3
|
|
\ matchgroup=cfmlParenthesis3
|
|
\ transparent
|
|
\ start=/(/
|
|
\ end=/)/
|
|
\ contains=
|
|
\cfmlParenthesisRegion1,
|
|
\@cfmlParenthesisRegionContains
|
|
sy cluster cfmlParenthesisRegion
|
|
\ contains=
|
|
\cfmlParenthesisRegion1,
|
|
\cfmlParenthesisRegion2,
|
|
\cfmlParenthesisRegion3
|
|
" / PARENTHESIS }}}
|
|
|
|
" BRACE {{{
|
|
sy match cfmlBrace
|
|
\ "{\|}"
|
|
|
|
sy region cfmlBraceRegion
|
|
\ extend
|
|
\ fold
|
|
\ keepend
|
|
\ transparent
|
|
\ start="{"
|
|
\ end="}"
|
|
" / BRACE }}}
|
|
|
|
" PUNCTUATION {{{
|
|
|
|
" PUNCTUATION - BRACKET {{{
|
|
sy match cfmlBracket
|
|
\ "\(\[\|\]\)"
|
|
\ contained
|
|
" / PUNCTUATION - BRACKET }}}
|
|
|
|
" PUNCTUATION - CHAR {{{
|
|
sy match cfmlComma ","
|
|
sy match cfmlDot "\."
|
|
sy match cfmlSemiColon ";"
|
|
|
|
" / PUNCTUATION - CHAR }}}
|
|
|
|
" PUNCTUATION - QUOTE {{{
|
|
sy region cfmlSingleQuotedValue
|
|
\ matchgroup=cfmlSingleQuote
|
|
\ start=/'/
|
|
\ skip=/''/
|
|
\ end=/'/
|
|
\ contains=
|
|
\cfmlHashSurround
|
|
|
|
sy region cfmlDoubleQuotedValue
|
|
\ matchgroup=cfmlDoubleQuote
|
|
\ start=/"/
|
|
\ skip=/""/
|
|
\ end=/"/
|
|
\ contains=
|
|
\cfmlHashSurround
|
|
|
|
sy cluster cfmlQuotedValue
|
|
\ contains=
|
|
\cfmlDoubleQuotedValue,
|
|
\cfmlSingleQuotedValue
|
|
|
|
sy cluster cfmlQuote
|
|
\ contains=
|
|
\cfmlDoubleQuote,
|
|
\cfmlSingleQuote
|
|
" / PUNCTUATION - QUOTE }}}
|
|
|
|
sy cluster cfmlPunctuation
|
|
\ contains=
|
|
\@cfmlQuote,
|
|
\@cfmlQuotedValue,
|
|
\cfmlBracket,
|
|
\cfmlComma,
|
|
\cfmlDot,
|
|
\cfmlSemiColon
|
|
|
|
" / PUNCTUATION }}}
|
|
|
|
" TAG START AND END {{{
|
|
" tag start
|
|
" <cf...>
|
|
" s^^ e
|
|
sy region cfmlTagStart
|
|
\ keepend
|
|
\ transparent
|
|
\ start="\c<cf_*"
|
|
\ end=">"
|
|
\ contains=
|
|
\@cfmlAttribute,
|
|
\@cfmlComment,
|
|
\@cfmlOperator,
|
|
\@cfmlParenthesisRegion,
|
|
\@cfmlPunctuation,
|
|
\@cfmlQuote,
|
|
\@cfmlQuotedValue,
|
|
\cfmlAttrEqualSign,
|
|
\cfmlBoolean,
|
|
\cfmlBrace,
|
|
\cfmlCoreKeyword,
|
|
\cfmlCoreScope,
|
|
\cfmlCustomKeyword,
|
|
\cfmlCustomScope,
|
|
\cfmlEqualSign,
|
|
\cfmlFunctionName,
|
|
\cfmlNumber,
|
|
\cfmlStorageKeyword,
|
|
\cfmlStorageType,
|
|
\cfmlTagBracket,
|
|
\cfmlTagName
|
|
|
|
" tag end
|
|
" </cf...>
|
|
" s^^^ e
|
|
sy match cfmlTagEnd
|
|
\ transparent
|
|
\ "\c</cf_*[^>]*>"
|
|
\ contains=
|
|
\cfmlTagBracket,
|
|
\cfmlTagName
|
|
|
|
" tag bracket
|
|
" </...>
|
|
" ^^ ^
|
|
sy match cfmlTagBracket
|
|
\ contained
|
|
\ "\(<\|>\|\/\)"
|
|
|
|
" tag name
|
|
" <cf...>
|
|
" s^^^e
|
|
sy match cfmlTagName
|
|
\ contained
|
|
\ "\v<\/*\zs\ccf\w*"
|
|
" / TAG START AND END }}}
|
|
|
|
" ATTRIBUTE NAME AND VALUE {{{
|
|
sy match cfmlAttrName
|
|
\ contained
|
|
\ "\v(var\s)@<!\w+\ze\s*\=([^\=])+"
|
|
|
|
sy match cfmlAttrValue
|
|
\ contained
|
|
\ "\v(\=\"*)\zs\s*\w*"
|
|
|
|
sy match cfmlAttrEqualSign
|
|
\ contained
|
|
\ "\v\="
|
|
|
|
sy cluster cfmlAttribute
|
|
\ contains=
|
|
\@cfmlQuotedValue,
|
|
\cfmlAttrEqualSign,
|
|
\cfmlAttrName,
|
|
\cfmlAttrValue,
|
|
\cfmlCoreKeyword,
|
|
\cfmlCoreScope
|
|
" / ATTRIBUTE NAME AND VALUE }}}
|
|
|
|
" TAG REGION AND FOLDING {{{
|
|
|
|
" CFCOMPONENT REGION AND FOLD {{{
|
|
" <cfcomponent
|
|
" s^^^^^^^^^^^
|
|
" </cfcomponent>
|
|
" ^^^^^^^^^^^^^e
|
|
sy region cfmlComponentTagRegion
|
|
\ fold
|
|
\ keepend
|
|
\ transparent
|
|
\ start="\c<cfcomponent"
|
|
\ end="\c</cfcomponent>"
|
|
|
|
" / CFCOMPONENT REGION AND FOLD }}}
|
|
|
|
" CFFUNCTION REGION AND FOLD {{{
|
|
" <cffunction
|
|
" s^^^^^^^^^^
|
|
" </cffunction>
|
|
" ^^^^^^^^^^^^e
|
|
sy region cfmlFunctionTagRegion
|
|
\ fold
|
|
\ keepend
|
|
\ transparent
|
|
\ start="\c<cffunction"
|
|
\ end="\c</cffunction>"
|
|
" / CFFUNCTION REGION AND FOLD }}}
|
|
|
|
" CFIF REGION AND FOLD {{{
|
|
" <cfif
|
|
" s^^^^
|
|
" </cfif>
|
|
" ^^^^^^e
|
|
sy region cfmlIfTagRegion
|
|
\ fold
|
|
\ keepend
|
|
\ transparent
|
|
\ start="\c<cfif"
|
|
\ end="\c</cfif>"
|
|
" / CFIF REGION AND FOLD }}}
|
|
|
|
" CFLOOP REGION AND FOLD {{{
|
|
" <cfloop
|
|
" s^^^^^^
|
|
" </cfloop>
|
|
" ^^^^^^^^e
|
|
sy region cfmlLoopTagRegion
|
|
\ fold
|
|
\ keepend
|
|
\ transparent
|
|
\ start="\c<cfloop"
|
|
\ end="\c</cfloop>"
|
|
" / CFLOOP REGION AND FOLD }}}
|
|
|
|
" CFOUTPUT REGION AND FOLD {{{
|
|
" <cfoutput
|
|
" s^^^^^^^^
|
|
" </cfoutput>
|
|
" ^^^^^^^^^^e
|
|
sy region cfmlOutputTagRegion
|
|
\ fold
|
|
\ keepend
|
|
\ transparent
|
|
\ start="\c<cfoutput"
|
|
\ end="\c</cfoutput>"
|
|
" / CFOUTPUT REGION AND FOLD }}}
|
|
|
|
" CFQUERY REGION AND FOLD {{{
|
|
" <cfquery
|
|
" s^^^^^^^
|
|
" </cfquery>
|
|
" ^^^^^^^^^e
|
|
"\@cfmlSqlStatement,
|
|
sy region cfmlQueryTagRegion
|
|
\ fold
|
|
\ keepend
|
|
\ transparent
|
|
\ start="\c<cfquery"
|
|
\ end="\c</cfquery>"
|
|
\ contains=
|
|
\@cfmlSqlStatement,
|
|
\cfmlTagStart,
|
|
\cfmlTagEnd,
|
|
\cfmlTagComment
|
|
" / CFQUERY REGION AND FOLD }}}
|
|
|
|
" SAVECONTENT REGION AND FOLD {{{
|
|
" <savecontent
|
|
" s^^^^^^^^^^^
|
|
" </savecontent>
|
|
" ^^^^^^^^^^^^^e
|
|
sy region cfmlSavecontentTagRegion
|
|
\ fold
|
|
\ keepend
|
|
\ transparent
|
|
\ start="\c<cfsavecontent"
|
|
\ end="\c</cfsavecontent>"
|
|
" / SAVECONTENT REGION AND FOLD }}}
|
|
|
|
" CFSCRIPT REGION AND FOLD {{{
|
|
" <cfscript>
|
|
" s^^^^^^^^^
|
|
" </cfscript>
|
|
" ^^^^^^^^^^e
|
|
"\cfmlCustomScope,
|
|
sy region cfmlScriptTagRegion
|
|
\ fold
|
|
\ keepend
|
|
\ transparent
|
|
\ start="\c<cfscript>"
|
|
\ end="\c</cfscript>"
|
|
\ contains=
|
|
\@cfmlComment,
|
|
\@cfmlFlowStatement,
|
|
\cfmlHashSurround,
|
|
\@cfmlOperator,
|
|
\@cfmlParenthesisRegion,
|
|
\@cfmlPunctuation,
|
|
\cfmlBoolean,
|
|
\cfmlBrace,
|
|
\cfmlCoreKeyword,
|
|
\cfmlCoreScope,
|
|
\cfmlCustomKeyword,
|
|
\cfmlCustomScope,
|
|
\cfmlEqualSign,
|
|
\cfmlFunctionDefinition,
|
|
\cfmlFunctionName,
|
|
\cfmlNumber,
|
|
\cfmlOddFunction,
|
|
\cfmlStorageKeyword,
|
|
\cfmlTagEnd,
|
|
\cfmlTagStart
|
|
" / CFSCRIPT REGION AND FOLD }}}
|
|
|
|
" CFSWITCH REGION AND FOLD {{{
|
|
" <cfswitch
|
|
" s^^^^^^^^
|
|
" </cfswitch>
|
|
" ^^^^^^^^^^e
|
|
sy region cfmlSwitchTagRegion
|
|
\ fold
|
|
\ keepend
|
|
\ transparent
|
|
\ start="\c<cfswitch"
|
|
\ end="\c</cfswitch>"
|
|
" / CFSWITCH REGION AND FOLD }}}
|
|
|
|
" CFTRANSACTION REGION AND FOLD {{{
|
|
" <cftransaction
|
|
" s^^^^^^^^^^^^^
|
|
" </cftransaction>
|
|
" ^^^^^^^^^^^^^^^e
|
|
sy region cfmlTransactionTagRegion
|
|
\ fold
|
|
\ keepend
|
|
\ transparent
|
|
\ start="\c<cftransaction"
|
|
\ end="\c</cftransaction>"
|
|
" / CFTRANSACTION REGION AND FOLD }}}
|
|
|
|
" CUSTOM TAG REGION AND FOLD {{{
|
|
" <cf_...>
|
|
" s^^^ ^
|
|
" </cf_...>
|
|
" ^^^^^ e
|
|
sy region cfmlCustomTagRegion
|
|
\ fold
|
|
\ keepend
|
|
\ transparent
|
|
\ start="\c<cf_[^>]*>"
|
|
\ end="\c</cf_[^>]*>"
|
|
" / CUSTOM TAG REGION AND FOLD }}}
|
|
|
|
" / TAG REGION AND FOLDING }}}
|
|
|
|
" COMMENT {{{
|
|
|
|
" COMMENT BLOCK {{{
|
|
" /*...*/
|
|
" s^ ^e
|
|
sy region cfmlCommentBlock
|
|
\ keepend
|
|
\ start="/\*"
|
|
\ end="\*/"
|
|
\ contains=
|
|
\cfmlMetaData
|
|
" / COMMENT BLOCK }}}
|
|
|
|
" COMMENT LINE {{{
|
|
" //...
|
|
" s^
|
|
sy match cfmlCommentLine
|
|
\ "\/\/.*"
|
|
" / COMMENT LINE }}}
|
|
|
|
sy cluster cfmlComment
|
|
\ contains=
|
|
\cfmlCommentBlock,
|
|
\cfmlCommentLine
|
|
" / COMMENT }}}
|
|
|
|
" TAG COMMENT {{{
|
|
" <!---...--->
|
|
" s^^^^ ^^^e
|
|
sy region cfmlTagComment
|
|
\ keepend
|
|
\ start="<!---"
|
|
\ end="--->"
|
|
\ contains=
|
|
\cfmlTagComment
|
|
" / TAG COMMENT }}}
|
|
|
|
" FLOW STATEMENT {{{
|
|
" BRANCH FLOW KEYWORD {{{
|
|
sy keyword cfmlBranchFlowKeyword
|
|
\ break
|
|
\ continue
|
|
\ return
|
|
|
|
" / BRANCH KEYWORD }}}
|
|
|
|
" DECISION FLOW KEYWORD {{{
|
|
sy keyword cfmlDecisionFlowKeyword
|
|
\ case
|
|
\ defaultcase
|
|
\ else
|
|
\ if
|
|
\ switch
|
|
|
|
" / DECISION FLOW KEYWORD }}}
|
|
|
|
" LOOP FLOW KEYWORD {{{
|
|
sy keyword cfmlLoopFlowKeyword
|
|
\ do
|
|
\ for
|
|
\ in
|
|
\ while
|
|
|
|
" / LOOP FLOW KEYWORD }}}
|
|
|
|
" TRY FLOW KEYWORD {{{
|
|
sy keyword cfmlTryFlowKeyword
|
|
\ catch
|
|
\ finally
|
|
\ rethrow
|
|
\ throw
|
|
\ try
|
|
|
|
" / TRY FLOW KEYWORD }}}
|
|
|
|
sy cluster cfmlFlowStatement
|
|
\ contains=
|
|
\cfmlBranchFlowKeyword,
|
|
\cfmlDecisionFlowKeyword,
|
|
\cfmlLoopFlowKeyword,
|
|
\cfmlTryFlowKeyword
|
|
|
|
" / FLOW STATEMENT }}}
|
|
|
|
" STORAGE KEYWORD {{{
|
|
sy keyword cfmlStorageKeyword
|
|
\ var
|
|
" / STORAGE KEYWORD }}}
|
|
|
|
" STORAGE TYPE {{{
|
|
sy match cfmlStorageType
|
|
\ contained
|
|
\ "\v<
|
|
\(any
|
|
\|array
|
|
\|binary
|
|
\|boolean
|
|
\|date
|
|
\|numeric
|
|
\|query
|
|
\|string
|
|
\|struct
|
|
\|uuid
|
|
\|void
|
|
\|xml
|
|
\){1}\ze(\s*\=)@!"
|
|
" / STORAGE TYPE }}}
|
|
|
|
" CORE KEYWORD {{{
|
|
sy match cfmlCoreKeyword
|
|
\ "\v<
|
|
\(new
|
|
\|required
|
|
\)\ze\s"
|
|
" / CORE KEYWORD }}}
|
|
|
|
" CORE SCOPE {{{
|
|
sy match cfmlCoreScope
|
|
\ "\v<
|
|
\(application
|
|
\|arguments
|
|
\|attributes
|
|
\|caller
|
|
\|cfcatch
|
|
\|cffile
|
|
\|cfhttp
|
|
\|cgi
|
|
\|client
|
|
\|cookie
|
|
\|form
|
|
\|local
|
|
\|request
|
|
\|server
|
|
\|session
|
|
\|super
|
|
\|this
|
|
\|thisTag
|
|
\|thread
|
|
\|variables
|
|
\|url
|
|
\){1}\ze(,|\.|\[|\)|\s)"
|
|
" / CORE SCOPE }}}
|
|
|
|
" SQL STATEMENT {{{
|
|
sy cluster cfmlSqlStatement
|
|
\ contains=
|
|
\@cfmlParenthesisRegion,
|
|
\@cfmlQuote,
|
|
\@cfmlQuotedValue,
|
|
\@sqlSyntax,
|
|
\cfmlBoolean,
|
|
\cfmlDot,
|
|
\cfmlEqualSign,
|
|
\cfmlFunctionName,
|
|
\cfmlHashSurround,
|
|
\cfmlNumber
|
|
" / SQL STATEMENT }}}
|
|
|
|
" TAG IN SCRIPT {{{
|
|
sy match cfmlTagNameInScript
|
|
\ "\vcf_*\w+\s*\ze\("
|
|
" / TAG IN SCRIPT }}}
|
|
|
|
" METADATA {{{
|
|
sy region cfmlMetaData
|
|
\ contained
|
|
\ keepend
|
|
\ start="@\w\+"
|
|
\ end="$"
|
|
\ contains=
|
|
\cfmlMetaDataName
|
|
|
|
sy match cfmlMetaDataName
|
|
\ contained
|
|
\ "@\w\+"
|
|
" / METADATA }}}
|
|
|
|
" COMPONENT DEFINITION {{{
|
|
sy region cfmlComponentDefinition
|
|
\ start="component"
|
|
\ end="{"me=e-1
|
|
\ contains=
|
|
\@cfmlAttribute,
|
|
\cfmlComponentKeyword
|
|
|
|
sy match cfmlComponentKeyword
|
|
\ contained
|
|
\ "\v<component>"
|
|
" / COMPONENT DEFINITION }}}
|
|
|
|
" INTERFACE DEFINITION {{{
|
|
sy match cfmlInterfaceDefinition
|
|
\ "interface\s.*{"me=e-1
|
|
\ contains=
|
|
\cfmlInterfaceKeyword
|
|
|
|
sy match cfmlInterfaceKeyword
|
|
\ contained
|
|
\ "\v<interface>"
|
|
" / INTERFACE DEFINITION }}}
|
|
|
|
" PROPERTY {{{
|
|
sy region cfmlProperty
|
|
\ transparent
|
|
\ start="\v<property>"
|
|
\ end=";"me=e-1
|
|
\ contains=
|
|
\@cfmlQuotedValue,
|
|
\cfmlAttrEqualSign,
|
|
\cfmlAttrName,
|
|
\cfmlAttrValue,
|
|
\cfmlPropertyKeyword
|
|
|
|
sy match cfmlPropertyKeyword
|
|
\ contained
|
|
\ "\v<property>"
|
|
" / PROPERTY }}}
|
|
|
|
" FUNCTION DEFINITION {{{
|
|
sy match cfmlFunctionDefinition
|
|
\ "\v
|
|
\(<(public|private|package)\s){,1}
|
|
\(<
|
|
\(any
|
|
\|array
|
|
\|binary
|
|
\|boolean
|
|
\|date
|
|
\|numeric
|
|
\|query
|
|
\|string
|
|
\|struct
|
|
\|uuid
|
|
\|void
|
|
\|xml
|
|
\)\s){,1}
|
|
\<function\s\w+\s*\("me=e-1
|
|
\ contains=
|
|
\cfmlFunctionKeyword,
|
|
\cfmlFunctionModifier,
|
|
\cfmlFunctionName,
|
|
\cfmlFunctionReturnType
|
|
|
|
" FUNCTION KEYWORD {{{
|
|
sy match cfmlFunctionKeyword
|
|
\ contained
|
|
\ "\v<function>"
|
|
" / FUNCTION KEYWORD }}}
|
|
|
|
" FUNCTION MODIFIER {{{
|
|
sy match cfmlFunctionModifier
|
|
\ contained
|
|
\ "\v<
|
|
\(public
|
|
\|private
|
|
\|package
|
|
\)>"
|
|
" / FUNCTION MODIFIER }}}
|
|
|
|
" FUNCTION RETURN TYPE {{{
|
|
sy match cfmlFunctionReturnType
|
|
\ contained
|
|
\ "\v
|
|
\(any
|
|
\|array
|
|
\|binary
|
|
\|boolean
|
|
\|date
|
|
\|numeric
|
|
\|query
|
|
\|string
|
|
\|struct
|
|
\|uuid
|
|
\|void
|
|
\|xml
|
|
\)"
|
|
" / FUNCTION RETURN TYPE }}}
|
|
|
|
" FUNCTION NAME {{{
|
|
" specific regex for core functions decreases performance
|
|
" so use the same highlighting for both function types
|
|
sy match cfmlFunctionName
|
|
\ "\v<(cf|if|elseif|throw)@!\w+\s*\ze\("
|
|
" / FUNCTION NAME }}}
|
|
|
|
" / FUNCTION DEFINITION }}}
|
|
|
|
" ODD FUNCTION {{{
|
|
sy region cfmlOddFunction
|
|
\ transparent
|
|
\ start="\v<
|
|
\(abort
|
|
\|exit
|
|
\|import
|
|
\|include
|
|
\|lock
|
|
\|pageencoding
|
|
\|param
|
|
\|savecontent
|
|
\|thread
|
|
\|transaction
|
|
\){1}"
|
|
\ end="\v(\{|;)"me=e-1
|
|
\ contains=
|
|
\@cfmlQuotedValue,
|
|
\cfmlAttrEqualSign,
|
|
\cfmlAttrName,
|
|
\cfmlAttrValue,
|
|
\cfmlCoreKeyword,
|
|
\cfmlOddFunctionKeyword,
|
|
\cfmlCoreScope
|
|
|
|
" ODD FUNCTION KEYWORD {{{
|
|
sy match cfmlOddFunctionKeyword
|
|
\ contained
|
|
\ "\v<
|
|
\(abort
|
|
\|exit
|
|
\|import
|
|
\|include
|
|
\|lock
|
|
\|pageencoding
|
|
\|param
|
|
\|savecontent
|
|
\|thread
|
|
\|transaction
|
|
\)\ze(\s|$|;)"
|
|
" / ODD FUNCTION KEYWORD }}}
|
|
|
|
" / ODD FUNCTION }}}
|
|
|
|
" CUSTOM {{{
|
|
|
|
" CUSTOM KEYWORD {{{
|
|
sy match cfmlCustomKeyword
|
|
\ contained
|
|
\ "\v<
|
|
\(customKeyword1
|
|
\|customKeyword2
|
|
\|customKeyword3
|
|
\)>"
|
|
" / CUSTOM KEYWORD }}}
|
|
|
|
" CUSTOM SCOPE {{{
|
|
sy match cfmlCustomScope
|
|
\ contained
|
|
\ "\v<
|
|
\(prc
|
|
\|rc
|
|
\|event
|
|
\|(\w+Service)
|
|
\){1}\ze(\.|\[)"
|
|
" / CUSTOM SCOPE }}}
|
|
|
|
" / CUSTOM }}}
|
|
|
|
" SGML TAG START AND END {{{
|
|
" SGML tag start
|
|
" <...>
|
|
" s^^^e
|
|
sy region cfmlSGMLTagStart
|
|
\ keepend
|
|
\ transparent
|
|
\ start="\v(\<cf)@!\zs\<\w+"
|
|
\ end=">"
|
|
\ contains=
|
|
\@cfmlAttribute,
|
|
\@cfmlComment,
|
|
\@cfmlOperator,
|
|
\@cfmlParenthesisRegion,
|
|
\@cfmlPunctuation,
|
|
\@cfmlQuote,
|
|
\@cfmlQuotedValue,
|
|
\cfmlAttrEqualSign,
|
|
\cfmlBoolean,
|
|
\cfmlBrace,
|
|
\cfmlCoreKeyword,
|
|
\cfmlCoreScope,
|
|
\cfmlCustomKeyword,
|
|
\cfmlCustomScope,
|
|
\cfmlEqualSign,
|
|
\cfmlFunctionName,
|
|
\cfmlNumber,
|
|
\cfmlStorageKeyword,
|
|
\cfmlStorageType,
|
|
\cfmlTagBracket,
|
|
\cfmlSGMLTagName
|
|
|
|
" SGML tag end
|
|
" </...>
|
|
" s^^^^e
|
|
sy match cfmlSGMLTagEnd
|
|
\ transparent
|
|
\ "\v(\<\/cf)@!\zs\<\/\w+\>"
|
|
\ contains=
|
|
\cfmlTagBracket,
|
|
\cfmlSGMLTagName
|
|
|
|
" SGML tag name
|
|
" <...>
|
|
" s^^^e
|
|
sy match cfmlSGMLTagName
|
|
\ contained
|
|
\ "\v(\<\/*)\zs\w+"
|
|
|
|
" / SGML TAG START AND END }}}
|
|
|
|
" HIGHLIGHTING {{{
|
|
|
|
hi link cfmlNumber Number
|
|
hi link cfmlBoolean Boolean
|
|
hi link cfmlEqualSign Keyword
|
|
" HASH SURROUND
|
|
hi link cfmlHash PreProc
|
|
hi link cfmlHashSurround PreProc
|
|
" OPERATOR
|
|
hi link cfmlArithmeticOperator Function
|
|
hi link cfmlBooleanOperator Function
|
|
hi link cfmlDecisionOperator Function
|
|
hi link cfmlStringOperator Function
|
|
hi link cfmlTernaryOperator Function
|
|
" PARENTHESIS
|
|
hi link cfmlParenthesis1 Statement
|
|
hi link cfmlParenthesis2 String
|
|
hi link cfmlParenthesis3 Delimiter
|
|
" BRACE
|
|
hi link cfmlBrace PreProc
|
|
" PUNCTUATION - BRACKET
|
|
hi link cfmlBracket Statement
|
|
" PUNCTUATION - CHAR
|
|
hi link cfmlComma Comment
|
|
hi link cfmlDot Comment
|
|
hi link cfmlSemiColon Comment
|
|
" PUNCTUATION - QUOTE
|
|
hi link cfmlDoubleQuote String
|
|
hi link cfmlDoubleQuotedValue String
|
|
hi link cfmlSingleQuote String
|
|
hi link cfmlSingleQuotedValue String
|
|
" TAG START AND END
|
|
hi link cfmlTagName Function
|
|
hi link cfmlTagBracket Comment
|
|
" ATTRIBUTE NAME AND VALUE
|
|
hi link cfmlAttrName Type
|
|
hi link cfmlAttrValue Special
|
|
" COMMENT
|
|
hi link cfmlCommentBlock Comment
|
|
hi link cfmlCommentLine Comment
|
|
hi link cfmlTagComment Comment
|
|
" FLOW STATEMENT
|
|
hi link cfmlDecisionFlowKeyword Conditional
|
|
hi link cfmlLoopFlowKeyword Repeat
|
|
hi link cfmlTryFlowKeyword Exception
|
|
hi link cfmlBranchFlowKeyword Keyword
|
|
" STORAGE KEYWORD
|
|
hi link cfmlStorageKeyword Keyword
|
|
" STORAGE TYPE
|
|
hi link cfmlStorageType Keyword
|
|
" CORE KEYWORD
|
|
hi link cfmlCoreKeyword PreProc
|
|
" CORE SCOPE
|
|
hi link cfmlCoreScope Keyword
|
|
" TAG IN SCRIPT
|
|
hi link cfmlTagNameInScript Function
|
|
" METADATA
|
|
" meta data value = cfmlMetaData
|
|
hi link cfmlMetaData String
|
|
hi link cfmlMetaDataName Type
|
|
" COMPONENT DEFINITION
|
|
hi link cfmlComponentKeyword Keyword
|
|
" INTERFACE DEFINITION
|
|
hi link cfmlInterfaceKeyword Keyword
|
|
" PROPERTY
|
|
hi link cfmlPropertyKeyword Keyword
|
|
" FUNCTION DEFINITION
|
|
hi link cfmlFunctionKeyword Keyword
|
|
hi link cfmlFunctionModifier Keyword
|
|
hi link cfmlFunctionReturnType Keyword
|
|
hi link cfmlFunctionName Function
|
|
" ODD FUNCTION
|
|
hi link cfmlOddFunctionKeyword Function
|
|
" CUSTOM
|
|
hi link cfmlCustomKeyword Keyword
|
|
hi link cfmlCustomScope Structure
|
|
" SGML TAG
|
|
hi link cfmlSGMLTagName Ignore
|
|
|
|
" / HIGHLIGHTING }}}
|
|
|
|
let b:current_syntax = "cfml"
|
|
|
|
let &cpo = s:cpo_save
|
|
unlet s:cpo_save
|