如何在不编辑Sublime Text的语法定义中添加功能?

时间:2012-11-09 19:11:31

标签: syntax-highlighting sublimetext2

例如,我想在我的Python文档字符串中突出显示@param@type@return(即epytext声明)。我已经想出了如何通过编辑Python/Python.tmLanguage来完成这项工作;但是,由于以下几个原因,我真的想把它放在自己的文件中:

  1. 总是想要应用此突出显示。它仅适用于使用epydoc作为其文档工具的项目;在其他项目中,我想强调reStructuredText而不是。
  2. 当Sublime Text更新时,我希望将自己的语法作为覆盖功能的叠加。 Sublime的作者可能会选择在未来版本中包含Python的几个功能,我不想在每次更新修改基本Python语法定义时手动找出我更改的内容。
  3. 我在编辑控件中保留了自己的编辑器配置,但我希望这是我自己原创的东西;我不想承担Sublime附带的语法定义副本(可能是专有的?我不知道,它似乎没有独立许可证)。
  4. 有没有办法将突出显示规则放入单独的文件中,或许只能应用于特定范围?

1 个答案:

答案 0 :(得分:7)

听起来我想要创建自己的语法文件,继承Python语法文件(source.python),并在那里进行更改和自定义。 Sublime Text 2使用.tmLanguage format for syntax files,这有点复杂,但幸运的是,大部分工作已经为您完成,只需继承source.python

您要做的是设置正则表达式模式以匹配您要突出显示的子字符串,并为该模式指定名称;像punctuation.definition.comment.epydoc之类的东西,遵循Java/JavaDoc.tmLanguage中设定的约定。然后,检查您的配色方案文件(以.tmTheme结尾)并确保您选择的范围或其父级之一的设置,因为ST2应该使用适当的范围规则的事情。

要使用您创建的语法文件,请将其粘贴在Packages/User中(以便ST2在升级时不会覆盖它),在编辑器中打开Python文件,然后从中选择新语法窗口右下角的下拉列表。如果您已正确设置所有内容,则epydoc字符串应更改为您在颜色方案中设置的任何颜色。

祝你好运!当你有一个有效的语法文件时,在某个地方发布一个链接,以便其他人也能看到并使用它!