【问题标题】:Textmate: HTML syntax: embedded in PHP single and double quotesTextmate:HTML 语法:嵌入 PHP 单引号和双引号
【发布时间】:2011-08-30 01:30:18
【问题描述】:

是否有突出显示嵌入在 PHP 单引号和双引号中的 HTML(在 Textmate 中没有定义范围)?

例子:

printf( 'This is some <strong>Text</strong>', 'foobar' );

单引号内的所有内容都属于同一个范围。这很烦人。有没有人试图以某种方式解决这个问题?我宁愿不改变语言文件(没有指导),我不精通正则表达式。

【问题讨论】:

    标签: php html syntax scope textmate


    【解决方案1】:

    您可能必须对 HTML 的范围定义进行一些相当复杂的编辑,才能使其按照您的描述工作。默认情况下,TextMate 中的 PHP 文件是 HTML 文件,因此您希望定义一个范围,在该范围内您有一个嵌入了 PHP 的 HTML 文件,其中的字符串可能是 HTML。并非 PHP 中的每个字符串都是 HTML,因此您需要找出一种方法来区分非 HTML 字符串和 HTML 字符串,如果您不熟悉正则表达式,则可能需要相当多的时间研究和反复试验以使其正确。

    作为替代方案,如果您实际使用 printf 而不是简单地将其用作通用示例,请考虑使用该函数仅格式化您需要格式化的内容并执行类似操作。

    <?php
    $var = sprintf( '%d', $num );
    ?>
    Here's the <strong><?php echo $var; ?></strong>.
    

    【讨论】:

    • 谢谢,但经过“反复试验”(很多)我实际上让它工作了。
    • 非常酷。我会尝试将它集成到我自己的 TM 环境中。 :)
    • 是的,我不敢相信人们还没有记录/分享它。我真的很想喜欢 Textmate,但现在定制它比现在的许多应用程序更难(有时甚至令人难以置信)。我目前正在使用 Espresso.app,它的感觉比 Textmate 更自然,但老实说,你无法击败 Textmate 的功能。很高兴你发现它有用。虽然我不确定这是否是在另一个中添加对其他语法的支持的正确方法。
    • 好吧,具有讽刺意味的是,我现在实际上正在阅读 vim 教程,以期放弃 TextMate。 :(
    • 哦,顺便说一句,我发现了一个小问题。如果 HTML 标记没有结束尖括号(即 '
      ' ),那么它会破坏单引号之后的所有内容。我试图弄清楚如何确保单引号起到“截止”点的作用
    【解决方案2】:

    没关系,我知道怎么做。在阅读了范围如何在 Textmate 中工作之后。我打开了 Bundle Editor 下的 PHP 语言面板,并将包含以下范围名称的包含粘贴到 string-single-quoted 范围中:

    text.html.basic

    以下包括:

    { include = 'text.html.basic'; },

    下面是整个 string-single-quoted 部分现在的样子:

    string-single-quoted = {
            name = 'string.quoted.single.php';
            contentName = 'meta.string-contents.quoted.single.php';
            begin = "'";
            end = "'";
            beginCaptures = { 0 = { name = 'punctuation.definition.string.begin.php'; }; };
            endCaptures = { 0 = { name = 'punctuation.definition.string.end.php'; }; };
            patterns = (
                {   include = 'text.html.basic'; },
                {   name = 'constant.character.escape.php';
                    match = '\\[\\'']';
                },
            );
        };
    

    【讨论】:

      猜你喜欢
      • 2018-05-09
      • 2011-06-02
      • 1970-01-01
      • 1970-01-01
      • 2014-06-28
      • 1970-01-01
      • 1970-01-01
      • 2013-02-07
      • 2013-02-05
      相关资源
      最近更新 更多