Textmate: HTML синтаксис: встроенный в PHP одинарные и двойные кавычки - PullRequest
0 голосов
/ 21 мая 2011

Есть ли в любом случае выделить HTML, встроенный в PHP одинарные и двойные кавычки & mdash; который не определен в рамках Textmate?

Пример:

printf( 'This is some <strong>Text</strong>', 'foobar' );

Все в одинарных кавычках относится к одной и той же области видимости. Это раздражает. Кто-нибудь пытался это как-то исправить? Я бы предпочел не изменять языковые файлы (без руководства), я не владею регулярными выражениями.

Ответы [ 2 ]

4 голосов
/ 22 мая 2011

Неважно, я узнал, как это сделать.После прочтения о том, как работают области в Textmate.Я открыл панель языков PHP в редакторе пакетов и вставил в область действия string-single-quoted включение следующего имени области:

text.html.basic

Вот включение:

{ include = 'text.html.basic'; },

и вот как теперь выглядит весь раздел string-single-quoted:

string-single-quoted = {
        name = 'string.quoted.single.php';
        contentName = 'meta.string-contents.quoted.single.php';
        begin = "'";
        end = "'";
        beginCaptures = { 0 = { name = 'punctuation.definition.string.begin.php'; }; };
        endCaptures = { 0 = { name = 'punctuation.definition.string.end.php'; }; };
        patterns = (
            {   include = 'text.html.basic'; },
            {   name = 'constant.character.escape.php';
                match = '\\[\\'']';
            },
        );
    };
1 голос
/ 22 мая 2011

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

В качестве альтернативы, если вы на самом деле используете printf, а не просто используете его в качестве общего примера, рассмотрите возможность использования функции для форматирования только того, что вам нужно отформатироватьи делать что-то вроде этого.

<?php
$var = sprintf( '%d', $num );
?>
Here's the <strong><?php echo $var; ?></strong>.
...