Я пытаюсь выделить пользовательский язык в 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'; },
);
}
В пятницу, 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'; },
);
}