Настройка подсветки синтаксиса в коде Visual Studio
===================================================

В настоящее время я пытаюсь написать расширение для нового типа файлов (ANTLR) и задаюсь вопросом, как изменить цвета, используемые для подсветки синтаксиса в коде Visual Studio. Для меня это выглядит так, как будто это не определено в расширении, но где-то еще. Там нет записи настроек для цветов, и я не нашел файл CSS, который определяет это (что я ожидаю, так как vscode использует Electron). Я также просмотрел файл настроек, сгенерированный vscode, и файлы, которые пришли с ним, но также не имел никакого понятия. Не помог ни поиск по сети. Итак, я сейчас немного потерян.

Может ли кто-нибудь дать мне несколько советов или указать на соответствующие документы?

 но я добавлю это сюда, чтобы сэкономить следующему парню несколько часов поиска.

Здесь действуют две концепции:

языковые грамматики, которые превращают текстовый файл в токены с различными**прицелы**, а такжетемы, которые раскрашивают те**прицелы** (надеюсь) приятным для глаз образом.Если вы пишете свою собственную грамматику или конвертируете из TextMate и т. Д., Есть вероятность, что вы используете области, отличные от определенных в теме. В этом случае не будет четкого различия между токенами, которые вы определяете, даже если они действительно определены.

Есть два выхода из этого. Во-первых, расширьте тему с помощью пользовательских областей и раскрасьте их по своему желанию. Не очень хороший путь, если только всем, кто использует ваш язык, также не нравится ваша цветовая схема. Другой - использовать (ограниченный набор) областей, уже определенных и раскрашенных VSCode и авторами темы. Скорее всего, ваш язык будет хорошо выглядеть в выбранной вами теме и достаточно хорош в других.

Чтобы дать вам пример, вот`comment` область действия определена темной темой VSCode по умолчанию.

```
"name": "Dark Visual Studio",
"settings": [
    {
        "scope": "comment",
        "settings": {
            "foreground": "#608b4e"
        }
    },

```
и вот эквивалентный фрагмент языка из грамматики C ++:

```
"comments": {
    "patterns": [
        {
            "captures": {
                "0": {
                    "name": "punctuation.definition.comment.java"
                }
            },
            "match": "/\\*\\*/",
            "name": "comment.block.empty.java"
        },

```
По сути, язык определяет несколько токенов под`comment`, по мере необходимости, и так как тема говорит, что`comment.*` будет зеленым, все они будут окрашены одинаково.



**Подсветка синтаксиса** правила хранятся в`.plist` файлы (или в качестве альтернативы в`.tmLanguage` файлы). В этих файлах объявлены разные типы токенов для подсветки синтаксиса:

арий?и т.п.Посмотрите здесь, чтобы получить больше информации об этом:<https://code.visualstudio.com/Docs/customization/colorizer>

**Вы не определяете цвета в`.plist` файлы!**

Связь между типами токенов и цветами осуществляется в объявлениях цветовой темы.

Узнай больше об этом здесь<https://code.visualstudio.com/Docs/customization/themes> и здесь[Как добавить тему в код Visual Studio?](https://stackoverflow.com/questions/30011737/how-to-add-theme-in-visual-studio-code/32335011#32335011)

В целом этот документ также полезен при попытке расширить VSCode:<https://code.visualstudio.com/docs/extensionAPI/overview>