Как правильно добавить расширение грамматики в vscode (чтобы оно работало)? - PullRequest
0 голосов
/ 20 февраля 2019

Мне очень трудно расширить грамматику shell-скрипта, так как она только выделяет встроенные команды bash.Я хочу выделить команды оболочки, а не только встроенные.Для этого я попытался расширить грамматику с помощью инъекций, но это не очень хорошо задокументировано, и поэтому я снова и снова сталкиваюсь с одной и той же проблемой, независимо от того, что я делаю.Если я ввожу некоторые команды, которые должны быть распознаны как функции (и, следовательно, выделены), они есть, но они также выделяются в комментариях, что очень раздражает.Я не избавляюсь от этого независимо от того, какие комбинации я пробовал.Так как токен support.function.extended.shell всегда имеет самое высокое значение из-за внедрения, он всегда окрашивается.Есть ли какое-то решение по этому вопросу?

Как вы можете видеть на картинке, встроенные команды типа "echo" не окрашены в комментариях, как это должно быть

{
"scopeName": "shellcommand.injection",
"injectionSelector": "L:source.shell -support.function.builtin.shell",
"patterns": [{
    "include": "#shell-commands"
}],
"repository": {
    "shell-commands": {
        "patterns": [{

            "match": "(?<=^|;|&|\\s)(systemctl|cp|sed|awk)(?=\\s|;|&|$)",
            "name": "support.function.extended.shell"

        }]
    }
}

}

Выходные данные выглядят так ...

enter image description here

1 Ответ

0 голосов
/ 21 февраля 2019

Скорее всего, вам нужен более конкретный селектор впрыска.Попробуйте либо настроить таргетинг на более конкретную область (в которой нет комментариев), либо исключить комментарии из селектора.Я думаю, что второй будет работать лучше для вашего примера.Для этого просто воспользуйтесь селектором отрицания -:

"injectionSelector": "L:source.shell -support.function.builtin.shell -comment"

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...