您自己在用户目录中的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 开头的所有范围。例如,如果您在 PHP.tmLanguage 中定义了false.constant.language.php,在 JavaScript.tmLanguage 中定义了false.constant.language.js,则可以在.tmTheme 文件中使用false.constant.language,其设置将同时应用于JS 和PHP false。