我正在尝试在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语言复制存储库来实现它。
答案 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'; },
);
}