(Как) Может ли грамматика TextMate указывать несколько областей в поле «name» или «contentName»? - PullRequest
0 голосов
/ 05 июня 2019

Может или Как вы можете указать несколько областей в полях name или contentName одного правила в грамматике TextMate, особенно для TextMate 2?

Я бы хотел указать несколько областей в одном правиле, поскольку существует несколько способов ссылаться на один и тот же токен / пунктуацию, и разные темы не поддерживают их все в полной мере.

Я успешно использовал пробел между спецификациями областей действия с VS Code, но вопрос здесь в том, что собственно TextMate действительно поддерживает? Я хочу убедиться, что метод совместим с TextMate, но не могу найти никакой документации по этому вопросу. Атом не поддерживает это.

Это один из примеров правила PowerShell, касающегося оператора подстановки интерполированной строки $( ), который успешно работает в VS Code, позволяя различным темам выделять лучшее, что они могут, лучшее из которых - punctuation.section.embedded.substatement.begin.powershell, поэтому его список указан последним, потому что он включает «встроенную» ссылку.

    interpolation:
        begin: "(\\$)(\\()"
        beginCaptures:
            "1":
                name: "keyword.other.substatement.powershell punctuation.definition.substatement.powershell punctuation.section.embedded.substatement.begin.powershell"
            "2":
                name: "punctuation.section.group.begin.powershell punctuation.section.embedded.substatement.begin.powershell"
        contentName: "interpolated.complex.source.powershell"
        end: "\\)"
        endCaptures:
            "0":
                name: "punctuation.section.group.end.powershell punctuation.section.embedded.substatement.end.powershell"
        name: "meta.embedded.substatement.powershell"
        patterns: [
            {
                include: "$self"
            }
        ]
...