2010-06-03 123 views
0

我想在TextMate中突出显示自定义语言。但是,下面的定义并不突出PHP插入(我选择它为我的* .serpent文件):无法在TextMate中自定义语法高亮工作

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

如果我选择PHP语言,那么PHP部分高亮显示。

可能是什么原因?它应该工作吗?

我也在考虑使用分隔符的红宝石插入,但它不适用于最简单的设置。


更新

显然,这仅仅是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语言库工作。

回答

0

在周五,2010年7月9日在08:02,艾伦 Odgaard 写道:

我们所做的PHP语法本身匹配 的结构,所以你 语法,这些位有被包括语法消耗 ,并且包括PHP语法的 将因此是 无操作。

我们把它之所以这样是如此 ,作为根语法使用时,PHP语法可以排序工作 的,因为 很多用户坚持使用它是 方式,尽管我们efforts¹教育 ; )

¹ 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'; }, 
    ); 
} 
+0

有一段时间没有工作代码,但后来它被修复了。 – Andrei 2010-07-09 18:27:53