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

Gly*_*yph 10 syntax-highlighting sublimetext2

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

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

有没有办法将突出显示规则放入单独的文件中,也许只能应用于特定范围?

sin*_*boy 7

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

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

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

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

  • 谢谢它是"遗传来自`source.python`"这一点,我一直在想.为后人做一点清楚 - 如果我还没有熟悉`.tmLanguage`格式,我不确定你的答案是否对我有意义 - 这意味着放一个`{"include":"来源. python"}`在根词典的"模式"数组中.同样重要的是,所有其他规则必须在*"继承"规则之前*,否则它们将不会首先匹配. (7认同)
  • Glyph,你还有语法文件吗?如果是这样,你可以发布一个链接,以便我可以看到你做了什么来解决它?谢谢. (5认同)