VSCode настроить подсветку синтаксиса в соответствии с руководством по стилю - PullRequest
0 голосов
/ 21 февраля 2019

Как изменить подсветку синтаксиса в VSCode, чтобы он соответствовал определенному руководству по стилю?Например, я хочу придерживаться руководства по стилю Google C ++ , где переменные-члены записываются как some_member_variable_.Когда я использую это соглашение, VSCode не окрашивает это имя в отличие от стандартного текста.Но у меня есть некоторый код, который использует соглашение mSomeMemberVariable, и что действительно окрашивается иначе, чем другой текст.Есть ли способ настроить это лучше?

1 Ответ

0 голосов
/ 22 февраля 2019

TL; DR > Нет простого способа применить подсветку синтаксиса в стиле Google, если вы не найдете для него существующий файл грамматики cpp Textmate (я не смог его найти).Однако, вот как вы бы это реализовали сами.

Глядя на файл синтаксиса CPP (cpp.tmLanguage.json), мы видим, что нет шаблона области видимости, который фиксирует переменные-члены в стиле Google.Вы можете добавить один:

{ // this is the existing scope that matches mSomeMemberVariable
    "match": "\\b(f|m)[A-Z]\\w*\\b",
    "name": "variable.other.readwrite.member.cpp"
},
{ // you can add this scope to match some_member_variable_
    "match": "\\b([a-z][a-z\\d]*_)+\\b",
    "name": "variable.other.readwrite.member.google.cpp"
}

Теперь вы можете убедиться, что он стилизован, убедившись, что его область действия (или любая из внешних областей, таких как variable.other.readwrite.member), имеет правило темы в .json вашей темы.файл.


Ниже приведено более подробное объяснение.Из здесь мы видим:

Есть два компонента подсветки синтаксиса:

  • Разбиение текста на список токенов и областей с использованием грамматики
  • Затем, используя тему, чтобы сопоставить эти области с определенными цветами и стилями

Сначала нам нужно выяснить, какая «область действия» стилизует переменную-член:

  • Палитра команд> ctrl+shift+p> Developer: Inspect TM Scopes
  • Щелкните по имени переменной-члена (mSomeMemberVariable)
  • Самой конкретной областью является самая верхняя запись.На момент публикации он называется variable.other.readwrite.member.cpp

Часть имени .cpp говорит нам, что область действия определена в грамматике C ++ (синтаксис).На данный момент файл, используемый для синтаксиса cpp, можно найти в [applications_folder]/code/resources/app/extensions/cpp/syntaxes/cpp.tmLanguage.json (см. Файл в репозитории github ).

Поиск имени области в файле определения синтаксиса,мы находим следующий шаблон:

{
    "match": "\\b(f|m)[A-Z]\\w*\\b",
    "name": "variable.other.readwrite.member.cpp"
}

И чтобы увидеть, какой стиль применяется к вышеуказанной области, мы смотрим на файл *.json активной темы.Например, если вы используете тему Dark + (по умолчанию темная) , вы можете найти файл json темы в extensions/theme-defaults/themes/dark_plus.json.В этом файле мы находим следующее правило темы text mate:

{
    "name": "Variable and parameter name",
    "scope": [
        "variable",
        "meta.definition.variable.name",
        "support.variable",
        "entity.name.variable"
    ],
    "settings": {
        "foreground": "#9CDCFE"
    }
}

Из этого правила мы видим, что выделение применяется областью действия variable.(обратите внимание, что все стили внешней области видимости применяются к внутренним, если вы не указали стиль внутренней области видимости, чтобы переопределить его)
Теперь одним из вариантов для вас будет добавить собственную область в существующий файл.Другой вариант - отредактировать существующую область видимости, чтобы она также соответствовала шаблону регулярных выражений переменных в стиле Google.Еще один вариант - определить собственную грамматику на основе файла стиля расширения CPP и создать собственное расширение Google CPP VSCode.Например, используя первый подход, вы можете отредактировать cpp.tmLanguage.json следующим образом:

{
    "match": "\\b([a-z][a-z\\d]*_)+\\b",
    "name": "variable.other.readwrite.member.google.cpp"
}

PS После редактирования файлов json перезапустите VSCode, чтобы изменения вступили в силу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...