Подсветка синтаксиса TextMate, расширение подсветки с другого языка - PullRequest
5 голосов
/ 29 июня 2010

Я пытаюсь расширить подсветку CSS в Textmate.Мой подход такой ...

{ 
    ....
    patterns = (
        { include = 'source.css'; },
        { 
            name = 'support.function';
            match = '\..*\);';
        },
    );
}

Проблема в том, что "include = 'source.css';".Если я уберу эту строку.Мой пользовательский сопоставитель отображает и применяет ожидаемое выделение.Но тогда я теряю все предопределенные выделения CSS, которые я хочу.

Я озадачен тем, как я могу переопределить существующую подсветку CSS, которую я включаю.Идеи? * * 1006

1 Ответ

4 голосов
/ 04 июля 2010

У меня была похожая проблема. Я ударился об это головой, а потом кто-то на IRC-канале TextMate прямо сказал мне: по какой-то причине (которую я забыл) вам нужно снова включить грамматику языка.

Мой раздел моделей теперь выглядит как

patterns = (
{   include = 'source.ruby'; },
{   include = '$self'; },
);

Чтобы добавить больше информации к этому примеру, вот мой грамматик языка для пакета, который I создавал (в части файла, которая меня интересовала, все было в области meta.rails.model. . Возможно, у вас этого нет в вашем CSS-пакете.

patterns = (
    {   name = 'meta.rails.model';
        comment = "Uses lookahead to match classes that (may) inherit from ActiveRecord::Base; includes 'source.ruby' to avoid infinite recursion";
        begin = '(^\s*)(?=class\s+.+ActiveRecord::Base)';
        end = '^\1(?=end)\b';
        patterns = (
            {   include = 'source.ruby'; },
            {   include = '$self'; },
        );
    },
    {   name = 'source.ruby.rails.aasm.event';
        match = '(aasm_event\W*:\w+)';
        captures = { 1 = { name = 'keyword.other.context.ruby.rails.aasm.event'; }; };
    },
    {   include = 'source.ruby.rails'; },
);

}

Но вы видите, что объявление $ self втягивает другие шаблоны в шаблон meta.rails.model (который, я думаю, почему это важно).

...