Проблема с созданием пользовательской подсветки синтаксиса в TextMate.На помощь!

Я пытаюсь выделить пользовательский язык в TextMate. Однако следующее определение не выделяет вставки PHP:

{   scopeName = 'source.serpent';
    fileTypes = ( 'serpent' );
    patterns = (
        {   begin = '<\?';
            end = '\?>';
            patterns = ( { include = 'source.php'; } );
        },
    );
}

Какова может быть причина?


Обновление

Ну, я был слишком наивен, чтобы ожидать, что вышеупомянутое определение обратится к определению языка PHP. По-видимому, для выделения вставок PHP, нужно скопировать значительную часть правил языка PHP на новый язык. И если я хотел бы использовать вставки Ruby также, затем это становится действительно грязным.

Так, я хотел бы спросить, возможно ли ОТНОСИТЬСЯ к (для НЕ копирования!) PHP или определения Ruby с моего нового языка (змея) определение. Это прояснило бы и уменьшило бы дублирование.


Update2

По-видимому, это - проблема PHP только. Следующее определение языка выделяет Ruby и языки Serpent в моем тексте, но не вставки PHP! Что, черт возьми, является неправильным здесь?

{   scopeName = 'source.phpruby.serpent';
    fileTypes = ( 'serpent', 'serpent.php', 'serpent.erb' );
    patterns = (
        {   begin = '<\?(php|=)?';
            end = '\?>';
            patterns = ( { include = 'source.php'; } );
        },
        {   begin = '<%';
            end = '%>';
            patterns = ( { include = 'source.ruby'; } );
        },
        {   include = 'source.serpent'; },
    );
}
1
задан 29.06.2010, 15:33

1 ответ

В пятницу, 9 июля 2010 в 8:02 Allan Odgaard записал:

Мы заставили саму грамматику PHP соответствовать конструкции, таким образом, с Вашей грамматикой, те биты были использованы включением грамматики, и включенная грамматика PHP для этого будет нет.

Причина мы сделали это этим путем, состояла в том так, чтобы грамматика PHP могла отсортировать работы при использовании в качестве корневой грамматики, так как много пользователей настаивает на том, чтобы использовать его тот путь, несмотря на наши усилия ¹ для обучения ;)

¹ http://wiki.macromates.com/Troubleshooting/PHPSyntaxHighlight

С помощью Бога я понял свою ошибку и смог сделать работу (по крайней мере, выделяющийся!) определение:

{   scopeName = 'source.phpruby.serpent';
    fileTypes = ( 'serpent', 'serpent.php', 'serpent.erb' );
    patterns = (
        {   begin = '<\?(php|=|)';
            end = '\?>';
            include = 'source.php';
        },
        {   begin = '<%';
            end = '%>';
            patterns = ( { include = 'source.ruby'; } );
        },
        {   include = 'source.serpent'; },
    );
}
0
ответ дан 24.11.2019, 01:55

Теги

Похожие вопросы