Вызов функции цветовой темы VSCode - PullRequest
0 голосов
/ 28 сентября 2018

Я делаю свои собственные локальные настройки этой цветовой темы для VSCode.Тема будет использоваться в основном для написания кода на 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"
  }
},

Я был бы в порядке, если быПри вызове функции использовался цвет текста по умолчанию переднего плана.

Ответы [ 2 ]

0 голосов
/ 06 марта 2019

Если вы не получите ответ, основанный на области действия, вы можете сделать это с большим количеством работы с помощью подхода на основе регулярных выражений.Использование такого расширения, как Highlight , которое позволяет указать подсветку синтаксиса для строк, которые могут быть захвачены с помощью регулярных выражений.Например,

 "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, но вы могли бы легко добавить другие альтернативы).

java code highlighted

0 голосов
/ 06 марта 2019

Для вызова функции, задающего цвет для следующих областей, добавьте следующие настройки:

{
  "name": "Function call",
  "scope": "meta.function-call.generic, meta.function-call.object, meta.function-call.static",
  "settings": {
    "foreground": "#e26f60"
  }
}, 

также вы можете установить цвет только для CPP, установив область действия

meta.function-call.cpp
...