我正在针对VSCode对this color theme做自己的本地调整。该主题将主要用于Java和C ++中的代码。
我希望函数和方法的声明颜色与函数和方法的调用不同。
因此在以下两个实例中,“ Foo”一词将使用不同的颜色...
public void Foo(String s, int d) {
}
someClass.Foo("blah" , 2);
当前在其中设置功能颜色的代码块如下
{
"name": "Functions",
"scope": "entity.name.function, meta.require, support.function.any-method",
"settings": {
"foreground": "#e26660"
}
},
如果函数调用使用默认的前台文本颜色,我会没事的。
答案 0 :(得分:1)
对于以下范围的函数调用集颜色,请添加以下设置:
write()
此外,您可以通过设置范围来设置CPP的颜色
{
"name": "Function call",
"scope": "meta.function-call.generic, meta.function-call.object, meta.function-call.static",
"settings": {
"foreground": "#e26f60"
}
},
答案 1 :(得分:0)
如果没有基于范围的答案,则可以通过基于正则表达式的方法完成更多工作。使用类似Highlight的扩展名,该扩展名允许您为可以通过正则表达式捕获的字符串指定synatx高亮显示。例如,
"highlight.regexes": {
"(\\b.*\\.)([^(\\s]*)(\\s*\\(.*\\))": {
"regexFlags": "g",
"filterLanguageRegex": "(java|cpp)",
\\ "filterFileRegex" : ".*\\.java",
"decorations" : [
{}, // first capture group, " do nothing
{ "color": "red",
"fontWeight": "bold",
"padding": "3px", // only pads top and bottom unfortunately
"backgroundColor": "darkgreen",
// "border": "1px solid white",
// "borderRadius": "4px"
},
{} // third capture group, ", do nothing
]
},
"((?:void|int)\\s+)([^(\\s]*)(\\s*\\(.*\\))": {
"regexFlags": "g",
"filterLanguageRegex": "(java|cpp)",
\\ "filterFileRegex" : ".*\\.java",
"decorations" : [
{}, // first capture group, " do nothing
{ "color": "red",
"fontWeight": "bold",
"padding": "3px", // only pads top and bottom unfortunately
"backgroundColor": "darkgreen",
// "border": "1px solid white",
// "borderRadius": "4px"
},
{} // third capture group, ", do nothing
]
}
其中一个捕获第二个捕获组中的呼叫,例如someClass.Foo("blah" , 2);
和Foo
。
第二个捕获组中的第二个捕获呼叫,例如public void Foo(String s, int d)
和Foo
。
我稍微简化了第二个正则表达式(我只添加了void
和int
,但是您可以轻松地添加其他替代项)。
答案 2 :(得分:0)
我已经为您找到了 C++ 的答案!
对于函数调用:
{
"name": "Function calls",
"scope": [
"entity.name.function.call.cpp",
],
"settings": {
"foreground": "#9bff6d"
}
},
和声明:
{
"name": "Function declarations",
"scope": [
"entity.name.function.definition.cpp",
],
"settings": {
"foreground": "#ffc66d"
}
},