Hi всем!
Многие из вас наверно встречались с глюками индента при редактировании
embperl-кода посредством mmm-mode. Скажем, есть у нас такой текст:
<table width=100% border=1 cellpadding=1 cellspacing=0>
<tr>
<td><b>Nick</b></td>
<td><b>Имя</b></td>
<td><b>Фото</b></td>
[$ if ( $is_admin ) $]
<td>
Action
</td>
Индент здесь полностью соответствует тому, что было получено в жизни. А
все потому, что по логике psgmlя строчка "[$ if ( $is_admin ) $]" - это
текст, а между </td> и <td> текста быть не должно. Отсюда и неправильные
отступы во всем документе.
С другой стороны, если этот "текст" сделать комментарием, то все отступы
становятся на свои места:
<table width=100% border=1 cellpadding=1 cellspacing=0>
<tr>
<td><b>Nick</b></td>
<td><b>Имя</b></td>
<td><b>Фото</b></td>
<!-- [$ if ( $is_admin ) $] -->
<td>
Action
</td>
Все правильно, ведь комментарий вполне допустим между </td> и <td>. Отсюда
и отсутствие глюков. И влюбом другом месте, оказывается, глюки вызываются
исключительно из-за наличия "нежелательного" текста между "промежуточными"
тэгами.
Поэтому сразу приходит в голову простая идея - если заставить пакет
psgml считать все заключенное в скобочки embperl'a ([- -], [$ $], ..)
комментариями, то все проблемы сразу исчезнут. Однако простое ковыряние
еги сходников к результату не привело, поэтому нужны какие-то более
серьезные изыскания.
Отсюда вопрос - никто здесь не занимался хакингом psgml? А может, то, что
здесь описано, кто-то уже реализовал?
WBR, Vlad. [E-labs] [MSTU] [VD1511]