无法在TextMate中进行自定义语法突出显示

时间:2010-06-03 20:44:36

标签: php ruby editor syntax-highlighting textmate

我正在尝试在TextMate中突出显示自定义语言。但是,以下定义不突出显示PHP插入(我为我的* .serpent文件选择它):

{ scopeName = 'source.serpent';
 fileTypes = ( 'serpent' );
 patterns = (
  { begin = '<\?';
   end = '\?>';
   patterns = ( { include = 'source.php'; } );
  },
 );
}

如果我选择PHP语言,那么PHP部分会突出显示。

可能是什么原因?它应该有用吗?

我还在考虑使用&lt; %%&gt;的ruby插入分隔符,但它不适用于最简单的设置。


更新

显然,这只是PHP的问题。以下语言定义在我的文本中突出显示Ruby和Serpent语言,但不是PHP插入!这有什么不对?

{   scopeName = 'source.phpruby.serpent';
    fileTypes = ( 'serpent', 'serpent.php', 'serpent.erb' );
    patterns = (
        {   begin = '<\?(php|=)?';
            end = '\?>';
            patterns = ( { include = 'source.php'; } );
        },
        {   begin = '<%';
            end = '%>';
            patterns = ( { include = 'source.ruby'; } );
        },
        {   include = 'source.serpent'; },
    );
}

我已经通过在我的模式中用#language替换source.php并从PHP语言复制存储库来实现它。

1 个答案:

答案 0 :(得分:0)

  

On Fri,2010年7月9日08:02, Allan   Odgaard   写道:

     

我们使PHP语法本身匹配   构造,所以与你的   语法,这些比特已被消耗   通过包括语法,和   因此包括PHP语法   无操作。

     

我们这样做的原因是这样的   PHP语法可以起作用   当用作根语法时,因为   很多用户坚持使用它   尽管我们努力¹教育   ;)

     

¹   http://wiki.macromates.com/Troubleshooting/PHPSyntaxHighlight

在上帝的帮助下,我理解了我的错误,并且能够制定一个工作(至少突出显示!)的定义:

{   scopeName = 'source.phpruby.serpent';
    fileTypes = ( 'serpent', 'serpent.php', 'serpent.erb' );
    patterns = (
        {   begin = '<\?(php|=|)';
            end = '\?>';
            include = 'source.php';
        },
        {   begin = '<%';
            end = '%>';
            patterns = ( { include = 'source.ruby'; } );
        },
        {   include = 'source.serpent'; },
    );
}