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, чтобы изменения вступили в силу.