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

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

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

 adabru02 сент. 2018 г., 15:08
Связанный вопросHow can I have an extension colorize the syntax the extension is defining without it actually being a color theme the user has to enable? спрашивается здесь:stackoverflow.com/questions/46377151/...

Ответы на вопрос(2)

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

арий?и т.п.

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

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

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

Узнай больше об этом здесьhttps://code.visualstudio.com/Docs/customization/themes и здесьКак добавить тему в код Visual Studio?

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

 seairth01 июл. 2016 г., 18:17
Обратите внимание, что вы можете столкнуться.tmLanguage файлы вместо.plist файлы, которые являются альтернативным синтаксисом на основе XML. Функционально они достигают той же цели. Вам нужно использовать только один формат файла или другой.
 Mike Lischke02 июл. 2016 г., 13:59
Спасибо, но я уже прочитал все эти документы. Тем не менее, ничто не объясняет, как бы вы изменили цвета. Несколько слов о том, как импортировать темы, скачивать их с рынка и так далее, но нигде не объясняется, как настроить тему или даже создать ее с нуля.
Решение Вопроса

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

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

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

Если вы пишете свою собственную грамматику или конвертируете из 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.* будет зеленым, все они будут окрашены одинаково.

 Laur08 янв. 2017 г., 00:16
И если кто-нибудь знает, как применять настраиваемые цвета к настраиваемым областям и расширению VSCode (может быть, с помощью CSS?), Я весь в ушах.
 Mike Lischke08 янв. 2017 г., 11:16
Как указано в вопросе, это как раз проблема. Вы не можете просто переопределить и добавить собственные стили к теме, но вы либо должны жить с теми, которые уже определены (которые могут или не могут соответствовать), или вы создаете свою полностью собственную тему (что я сделал), но это не пользователь дружелюбный (что если им не нравится ваша тема?). Нам нужен способ изменить любую активную тему из расширения, если это необходимо.
 Laur09 янв. 2017 г., 21:09
Решение может быть ближе, чем мы думаем:github.com/Microsoft/vscode/pull/17933  Хотя это все еще открыто, и это похоже на то, что мы оба хотим:github.com/Microsoft/vscode/issues/11556

Ваш ответ на вопрос