2012-03-16 44 views
3

我希望有一个$(美元符号),它表示一个php变量在ST2中显示为它自己的颜色(#ff0000)。我一直在编辑自定义颜色方案文件,但似乎无法为此符号获取特殊颜色。在Sublime Text中编辑颜色方案2

回答

5

重要附录前缀答案

以下说明假定,一个是写在JSON的语法定义,然后建立与PackageDev插件的plist XML文件(如以下链接的非官方崇高文档描述)。 ST2从后面的文件中读取语法分析指令。

= = = =

我向你报告从我自己第一次涉足这一领域,所以我可能会被误认为在接下来一两个点。

除非您的语法分析器将$定义为具有自己的范围选择器,否则将无法通过配色方案文件为该孤立符号设置颜色。正如你可能已经知道的那样,你可以通过选择它并按下option +命令+ p(在非mac上的alt + super + p)来检查元素的范围选择器:它报告状态栏中的信息。

我刚刚在自己的软件上检查了php语法分析器,并且$的范围与它前缀所在的字符串之间没有区别。因此,假设您的设置与我自己的设置类似,您需要编写自己的语法定义。这可以在现有的php语法文件中完成,或者(在一个新的定义文档中肯定是一个更安全的选项)完成,您将使用它作为编辑的主要文档。

您可以在非官方的崇高文本文档中找到一个教程,其中涵盖了编写自己的语法定义的基本步骤。实际上,标题为“Fine Tuning Matches”的部分解释了如何通过使用“捕捉”来定义范围选择器,尤其是前缀dolla'符号的范围选择器。你可以参考文档中关于创建语法定义文件的细节以及所有这些,但为了巩固我对流程的理解并在此处提供答案,我将尽我所能解释JSON确定选择器。

这是你需要使用正则表达式模式:

的上面的意思
{ "match": "\\$([A-Za-z][A-Za-z0-9_]+)", 
    "name": "keyword.syntaxTypeAbbreviation", 
    "captures": { 
    "1": { "name": "moreSpecific.selectorName.syntaxTypeAbbreviation " } 
    }, 
    "comment": "Variables like $PARAM1, $TM_SELECTION..." 
} 

分析:

"match"给出了确定要选择的字符串模式的正则表达式。除非我错了,它会显示“任何以'$'开头的字符串([后跟一个大写或小写字母]和[至少一个附加字母或数字]加上任何其他字符)”。 (Sublime Text使用oniguruma regex specifications。)

"name"提供了在配色方案文档中选择范围的字符串。在方案xml中,这对应于<key>name</key> <string>specific.selector.syntaxTypeAbbreviation</string>

"captures"(这是您的目标的关键元素)指定了模式的子集,它将被赋予其自己的更具体的范围选择器。圆括号内的每一组正则表达式占据一个地方,整数(这里为"1")指定哪些地方将被“捕获”。当然,在我们的情况下,只有一个可捕获的组。

"name"和以前一样,但是作为先前指定的亚种,"comment"为您提供了评论定义重要性的选项。

最后,需要注意的是第一范围选择将设置整串的颜色和覆盖它的前辈给不同的颜色下面的字母和数字是很重要的。也就是说,第一个选择器将让您着色$,第二个选择器将成为附加字符串的颜色。

因此,我们可以翻译这样的图案:

“的任何字符串开头与‘$’([后跟一个大写或 小写字母]和[至少一种额外的字母或数字]加上 任何附加字符)被命名为NAME,除了其被封闭在所述第一组括号的,这是被命名为中文别名代替的部分。

我希望这种解释至少有一半对你来说是有用的,因为这对我来说是可以写的。此外,我会很感激人们纠正我确实犯下的任何错误。

问候,

aBath

+1

崇高文本2:V2.0.5此定义为 - punctuation.definition.variable.php – Nick 2013-01-25 18:28:25

5

在你的配色方案文件:

<dict> 
    <key>name</key> 
    <string>Variable start</string> 
    <key>scope</key> 
    <string>punctuation.definition.variable</string> 
    <key>settings</key> 
    <dict> 
     <key>fontStyle</key> 
     <string>bold</string> 
     <key>foreground</key> 
     <string>#ff0000</string> 
    </dict> 
</dict> 

注:fontstyle =大胆也是一种选择