Sublime Text 2中的语法突出显示

时间:2013-04-06 06:15:42

标签: syntax-highlighting sublimetext2 sublimetext

所以我一直试图找出如何在clc文件中以崇高文本为typedef的名称添加语法高亮。

例如,如果我typedef long long integer;我希望integer突出显示(最好与其他类型的颜色相同:intbool等)。我查看了C.tmLanuage文件,并尝试将以下正则表达式代码^typedef.*?\s(\w+)\s*;添加到storage.type.c(第49行),但它不起作用。如果我添加单词string,它将突出显示单词字符串的所有实例。我尝试使用C ++。tmLanguage文件,并将正则表达式代码添加到storage.type.c++,但它仍然无效。

有人知道如何在崇高文字中突出显示typedef吗?

另外,有没有办法让类名的语法高亮?假设我声明了stringvector,我希望突出显示stringvector

1 个答案:

答案 0 :(得分:2)

如果你有typedef foo;的内容,那么正则表达式会起作用(我相信)要获得你想要的行为,你必须在tmLanguage文件中创建一个稍微复杂的模式条目。由于语言文件基于TextMates,因此您需要将其作为参考(http://manual.macromates.com/en/language_grammars#language_grammars)。我还建议使用PlistJsonConverter(使用JSON比使用XML更容易)。您可能需要定义开始和结束模式(开始可能是typedef结束可能是;)。然后,您可以将所需的任何模式应用于该组。

至于类名突出显示,我会看看,如果正在应用任何范围。如果没有,你将不得不想出一个正则表达式来应用范围。然后,您可以添加颜色条目,或使用颜色方案中定义的颜色条目。

修改

实际上它们似乎不是JSON。我看到()而不是[]。 JSON很容易理解。您可以更深入地查找更多内容,但wikipedia是一个很好的起点。您可能感兴趣的是“规则键”部分下的内容。我做了一些搜索(因为我知道那里有一些更好的例子),并遇到了http://docs.sublimetext.info/en/latest/extensibility/syntaxdefs.html。它从头开始讨论语法定义,但最相关的部分可能是http://docs.sublimetext.info/en/latest/extensibility/syntaxdefs.html#analyzing-patterns。我没有正则表达式来查找类名,所以你必须自己想出一个。如果您还没有,您可能想要搜索其他人是否以适合您的方式实现了语言文件。

您将需要从内置的tmLanguage文件开始,并将其从Plist转换为json。然后,您可以编辑该文件并将其移回。