如何让PhpStorm解释自定义分隔符?

时间:2017-01-18 10:23:12

标签: phpstorm brackets jetbrains-ide ractivejs

我在Symfony应用程序中使用Ractive模板。

由于我的Ractive模板位于.twig文件中,因此我无法在Ractive值周围使用花括号,因此我使用Ractive的custom delimiters

例如,<p>{{text}}</p>变为<p>[[text]]</p>

它工作得很好,但我的问题是PhpStorm不会将括号识别为模板值,这会导致一些恼人的后果:

没有语法着色,缩进被搞砸了,并且有警告应该没有。

如何让PhpStorm将我的双括号解释为模板值?

编辑:代码示例:

<script type="text">
    $(function () {
    var a = new Analytics();
    a.site = '{{ site.id }}'; {# Twig #}
    a.run();
});
</script>

{# Below is ractive #}
<table class="table">
    <tr class="general">
        <th></th>
        [[#each columns: i]]
            [[#if stats]]
                <th>[[trans('column.' + columns[i])]]</th>
            [[/if]]
        [[/each]]
    </tr>
    [[> totalLine]]
    [[#each templates: t]]
        [[> templateLine]]
    [[/each]]
</table>

2 个答案:

答案 0 :(得分:0)

这是XY problem的一个例子。

真正的问题(&#34; X问题&#34;)是Ract语法,特别是{{ }},被解析器视为Twig。这可以通过将Ractive模板包装在verbatim部分周围来解决,以防止Twig像Twig那样处理Ractive模板。

&#34; Y问题&#34;源于你试图解决&#34; X问题&#34;。也就是说,使用自定义分隔符时,IDE语法会突出显示。

为什么Ractive模板上的{{ }}语法突出显示起作用是因为Twig的语法涉及{{ }}。然而,突出显示对Ractive一无所知。恰好两种语言都使用{{ }},类似于语法荧光笔认为它的Twig ......以及像Twig这样的样式。

此外,大多数(如果不是全部)IDE仅支持单语高亮显示。由于您的文件被视为Twig模板,因此它会突出显示Twig。是否应支持多语言语法突出显示由IDE供应商确定,并且您无法做任何事情(除非您自己制作插件)。

答案 1 :(得分:0)

我对VueJS和Twig大括号有相同的疑问。

我发现的唯一解决方案是使用选项卡按钮自动完成fighting = True while fighting: # P1 turn # Get input and random # Change HP # If after the change, the HP is <= 0: fighting = False break ... enter code here 的构造,使其显示为[[

enter image description here