我正在尝试为cf.vim
创建补丁,以解决哈希问题。在ColdFusion中,使用#
符号将表达式括在cfoutput
块内。
<cfset x = 1 />
<cfoutput> x is now #x# </cfoutput>
<!--- outputs "x is now 1" --->
当存在一个单独的
#
而不是cfoutput
块内部时,该问题就起作用了:<a href="#x">an anchored link</a>
这将使vim突出显示
#
之后的所有内容,就像在cfHashRegion
中一样。syn region cfHashRegion start=+#+ skip=+"[^"]*"\|'[^']*'+ end=+#+ contained containedin=cfOutputRegion contains=@cfExpressionCluster,cfScriptParenError
syn region cfOutputRegion matchgroup=NONE transparent start=+<cfoutput>+ end=+</cfoutput>+ contains=TOP
我可以添加一些内容到
cfHashRegion
中,告诉vim“除非找到start和end属性,否则不要输入cfHashRegion吗?super 奖励:
cfoutput
是“cfOutputRegion”中最常见的方式。任何带有output =“true”的cffunction
的行为都将好像其块中的所有内容都包裹在cfoutput
标记中一样。 最佳答案
您是否尝试过使用syn match
而不是syn region
?我不知道ColdFusion语法,所以我不知道这是否可能/正确。
就像是:
syn region cfHashRegion "L\=#[^#]+#" containedin=cfOutputRegion contains=@cfExpressionCluster,cfScriptParenError
在某些情况下,您可能还想研究
contains=ALLBUT,{group-name},..
参数列表的使用。