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

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

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

что может быть причиной?


обновление

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

Итак, я хотел бы спросить, Можно ли ссылаться на (не копировать!) Определения PHP или Ruby из определения моего нового языка (serpent). Это позволит прояснить ситуацию и сократить дублирование.


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'; },
    );
}
11
задан Andrei
01.03.2023 14:22 Количество просмотров материала 2983
Распечатать страницу

1 ответ

Пт, 9 июля 2010 в 08: 02, Аллан Odgaard написал:

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

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

1 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
отвечен Andrei 2023-03-02 22:10

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх