Как добавить простой синтаксис в VSCode? - PullRequest
0 голосов
/ 25 января 2019

Я бы хотел добавить к vscode самую простую из возможных грамматику и подсветку синтаксиса языка (mvp).

Это (imo) путаница документов TextMate (применяются две разные версии)и случайный интернет-совет.Я не могу заставить базовый пример работать или найти его.

Как добавить грамматику языка только с одним правилом (например, трактовать "foo" как mylang.symbol.foo) и одинправило раскраски, которое влияет на этот символ?

1 Ответ

0 голосов
/ 25 января 2019

Файл грамматики должен быть объявлен в разделе contributes.grammars в package.json, здесь приведен пример языка foo. Поскольку VSCode еще не знает языков с таким идентификатором, нам также необходимо зарегистрировать новый идентификатор языка здесь:

{
    // ...
    "contributes": {
        "grammars": [
            {
                "language": "foo",
                "scopeName": "source.foo",
                "path": "grammar.json"
            }
        ],
        "languages": [
            {
                "id": "foo",
                "extensions": ["foo"]
            }
        ]
    }
}

grammar.json выглядит так:

{
    "scopeName": "source.foo",
    "patterns": [
        {
            "match": "foo",
            "name": "mylang.symbol.foo"
        }
    ]
}

Команда Developer: Inspect TM Scopes подтверждает, что это работает должным образом:


Чтобы mylang.symbol.foo был окрашен определенным образом, расширение также должно добавить тему в package.json:

{
    // ...
    "contributes": {
        // ...
        "themes": [
            {
                "label": "foo",
                "id": "foo",
                "uiTheme": "vs-dark",
                "path": "theme.json"
            }
        ]
    }
}

С theme.json выглядит так:

{
    "$schema": "vscode://schemas/color-theme",
    "name": "Foo Theme",
    "tokenColors": [
        {
            "scope": "mylang.symbol.foo",
            "settings": {
                "foreground": "#FF0000"
            }
        }
    ]
}

После выбора темы с помощью команды Preferences: Color Theme слово foo будет окрашено в красный цвет (а bar - нет):


Практически все это также должно быть включено в официальные документы VSCode по Подсветка синтаксиса и Цветовые темы , но более подробно.

Кстати, вместо JSON VSCode также поддерживает грамматики TmLanguage в формате XML / plist из коробки, но я считаю, что первая имеет тенденцию быть более читабельной. И на самом деле, наиболее читаемый формат для грамматик TmLanguage, по моему мнению, это YAML, поскольку они в основном состоят из регулярных выражений и их не нужно экранировать. Однако для этого требуется шаг преобразования из YAML в JSON или XML для VSCode.

...