我试图在TextMate中突出显示一种自定义语言。但是,以下定义没有突出显示PHP插入(我确实为我的*.serpent文件选择了它):
{ scopeName = 'source.serpent';
fileTypes = ( 'serpent' );
patterns = (
{ begin = '<\?';
end = '\?>';
patterns = ( { include = 'source.php'; } );
},
);
}如果选择PHP语言,则会突出显示PHP部件。
原因是什么?它应该有效吗?
我还考虑了带有<% %>分隔符的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'; },
);
}我通过在我的模式中用#语言替换source.php和从PHP复制存储库来实现它的工作。
发布于 2010-07-09 16:49:31
On Fri,7月9日,2010年7月9日08:02,Allan Odgaard写道:
我们使PHP语法本身与构造相匹配,因此在使用语法时,包含的语法已经被包含的语法所消耗,因此所包含的PHP语法将是不操作的。
我们这样做的原因是为了使PHP语法在用作根语法时可以工作,因为许多用户坚持以这种方式使用它,尽管我们努力教育它;)
1-1- 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'; },
);
}https://stackoverflow.com/questions/2969626
复制相似问题