Сопоставление идентификаторов между файлами tmLanguage и tmTheme

Я пытаюсь понять, как Visual Studio Code сопоставляет идентификаторы между темой и языковыми файлами. Например, в одном файле tmLanguage у меня есть такое определение:

...
            <dict>
                <key>begin</key>
                <string>'</string>
                <key>beginCaptures</key>
                <dict>
                    <key>0</key>
                    <dict>
                        <key>name</key>
                        <string>punctuation.definition.string.begin.java-or-c</string>
                    </dict>
                </dict>
...

Словарь содержит идентификатор punctuation.definition.string.begin.java-or-c для определения начала строки в одинарной кавычке. Теперь, глядя в один из имеющихся у меня файлов tmThemes, этот идентификатор никогда не упоминается, и на самом деле я могу представить, что авторы языковых файлов могут использовать любой идентификатор, который они хотят. Но как можно сопоставить тему с ними, чтобы VS Code знал, какой цвет применить? Есть ли где-нибудь документация, описывающая процесс?


person Mike Lischke    schedule 14.08.2016    source источник


Ответы (2)


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

Вы также можете проверить следующий ответ:
Есть ли какие-либо стандарты для типов ключевых слов tmlanguage?

person DAXaholic    schedule 14.08.2016
comment
⇬ так как это заставило меня начать, хотя на самом деле это не отвечает на вопрос. - person Mike Lischke; 14.08.2016

Visual Studio Code, очевидно, использует подход к стилю из TextMate, поэтому многое из того, что применяется в TextMate (например, настройка темы и языка), применимо и в VS Code. Сопоставление выполняется так же, как и для селекторов CSS, как описано в документации по селекторам области действия. Вкратце: файлы темы содержат значения цвета для определенных областей (например, упомянутых DAXaholic). Они частично или полностью соответствуют областям, указанным в языковом файле, например. область "string" соответствует всем областям "string.quoted" и т. д.

Дополнительную информацию, особенно о том, какие области следует поддерживать в файлах языка и темы, можно найти на странице: Написание грамматики TextMate: некоторые извлеченные уроки, где также упоминается список стандартных областей.

person Mike Lischke    schedule 14.08.2016