您自己PHP.tmlanguage
在用户目录中的内容不起作用,因为编辑.tmlanguage
文件是描述语言和设置范围的一种方式,而不是突出显示术语的方式。因此,您需要额外的操作才能在编辑器窗口中突出显示这些内容。
突出显示在.tmTheme
文件中完成。在文件中,您可以使用范围.tmLanguage
,以便为适合范围的文本应用颜色。
1. PHP.tmLanguage
据我所知,也许我错了,不可能为语法定义创建一个“补丁”文件。你不能创建一个小补丁文件来扩展 PHP 语法。语法在一个文件中描述,因此 PHP 的所有范围必须在一个文件中描述。如果要为 PHP 语言添加、删除或更改某些内容,则需要编辑相应的文件,该文件必须包含整个 PHP 的语法定义。好消息是,可以将.tmLanguage
文件复制到User
目录并保持本机文件的安全。
让我们复制PHP.tmLanguage
到您的User
文件夹中并进行一些编辑。你可以在里面找到这些字符串:
<dict>
<key>match</key>
<string>(?i)\b(TRUE|FALSE|NULL|__(FILE|DIR|FUNCTION|CLASS|METHOD|LINE|NAMESPACE)__|ON|OFF|YES|NO|NL|BR|TAB)\b</string>
<key>name</key>
<string>constant.language.php</string>
</dict>
如您所见,现在true
和false
都在同一个范围内,constant.language.php
. 您可以通过从范围中删除它们并为它们添加两个单独的范围来更改它。
<dict>
<key>match</key>
<string>(?i)\b(NULL|__(FILE|DIR|FUNCTION|CLASS|METHOD|LINE|NAMESPACE)__|ON|OFF|YES|NO|NL|BR|TAB)\b</string>
<key>name</key>
<string>constant.language.php</string>
</dict>
<dict>
<key>match</key>
<string>(?i)\b(TRUE)\b</string>
<key>name</key>
<string>true.constant.language.php</string>
</dict>
<dict>
<key>match</key>
<string>(?i)\b(FALSE)\b</string>
<key>name</key>
<string>false.constant.language.php</string>
</dict>
2.主题修改
不可能在tmLanguage
文件中设置颜色,因为它的目的是确定范围——语言元素。所有语法突出显示在.tmTheme
文件中完成。所以我能想象的最好的事情是将当前主题文件复制到User
目录并编辑它。
例如,如果您当前的主题是Slush & Poppies
,您可以将其复制ST3/Packages/Color Scheme - Default.sublime-package\Slush & Poppies.tmTheme
到ST3/User/Data/Packages/User
目录并进行编辑。
搜索字符串,constant.language
。它是这个块的一部分:
<dict>
<key>name</key>
<string>Built-in constant</string>
<key>scope</key>
<string>constant.language</string>
<key>settings</key>
<dict/>
</dict>
看起来Slush & Poppies
没有着色常量的设置。但这不是问题。在下面的代码中,我编写了一个示例来帮助理解如何应用颜色设置。所以,让我们把上面的块改成这个:
<dict>
<key>name</key>
<string>Built-in constant</string>
<key>scope</key>
<string>constant.language</string>
<key>settings</key>
<dict/>
</dict>
<dict>
<key>name</key>
<string>TRUE</string>
<key>scope</key>
<string>true.constant.language</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#008900</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>FALSE</string>
<key>scope</key>
<string>false.constant.language</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#890000</string>
</dict>
</dict>
重新启动 ST3(看起来 ST3.tmLanguage
在运行时不会完全更新范围列表,因此最好重新启动它)并选择菜单“首选项”→“颜色方案”→“用户”→“雪泥和罂粟”。在这个主题中,您将true
用绿色false
突出显示并用红色突出显示。当然,你可以编辑任何你想要的配色方案,不仅仅是这个。
还有一件事,在.tmTheme
文件中,您不能使用整个范围名称,而是它的一部分。例如,可以使用false.constant.language
代替false.constant.language.php
. 使用false.constant.language
时,设置将应用到名称开头的所有作用域false.constant.language
。例如,如果您false.constant.language.php
在 PHP.tmLanguage 和false.constant.language.js
JavaScript.tmLanguage 中定义,则可以false.constant.language
在.tmTheme
文件中使用,其设置将同时应用于 JS 和 PHP false
。