VSCode颜色主题函数调用

时间:2018-09-28 14:57:36

标签: visual-studio-code textmate color-scheme

我正在针对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"
  }
},

如果函数调用使用默认的前台文本颜色,我会没事的。

3 个答案:

答案 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

我稍微简化了第二个正则表达式(我只添加了voidint,但是您可以轻松地添加其他替代项)。

java code highlighted

答案 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"
        }
    },