【问题标题】:vim syntax highlighting of ColdFusion hash marksColdFusion 哈希标记的 vim 语法高亮
【发布时间】:2023-03-18 00:54:02
【问题描述】:

我正在尝试为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?

超级奖励:cfoutput 只是进入“cfOutputRegion”的最常见方式。任何带有 output="true" 的 cffunction 都会表现得好像其块内的所有内容都包含在 cfoutput 标记中。

【问题讨论】:

    标签: vim coldfusion syntax-highlighting


    【解决方案1】:

    您是否尝试过使用syn match 而不是syn region?我不知道 ColdFusion 语法,所以我不知道这是否可能/正确。

    类似:

    syn region cfHashRegion "L\=#[^#]+#" containedin=cfOutputRegion  contains=@cfExpressionCluster,cfScriptParenError
    

    在某些情况下,您可能还想研究 contains=ALLBUT,{group-name},.. 参数列表的用法。

    【讨论】:

    • 我不得不转义 +,但它奏效了。它并不完美,因为 cfHashRegion 实际上可以拆分为多行。但在实践中,它们几乎总是在一条线上。谢谢!
    • 我将此添加到我的 Vim 插件以获得更好的 CF 支持 github.com/davejlong/cf-utils.vim
    猜你喜欢
    • 1970-01-01
    • 2012-08-16
    • 2014-11-14
    • 2011-01-19
    • 2015-08-08
    • 2014-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多