Это Perl-код, встроенный в HTML, поэтому отступ от $VIMRUNTIME/indent/html.vim
. Это определяет 'indentexpr'
, реализованный HtmlIndent()
.
Вам нужно изменить эту реализацию, чтобы игнорировать %
в первом столбце; всякий раз, когда он обращается к буферу (getline()
, prevnonblank()
, shiftwidth()
), вам нужно перехватить, найти предыдущую строку, которая имеет такой %
символ, и вместо этого вернуть значение для этого. (Если эти специальные строки могут также содержать HTML-теги, возможно, вам придется извлечь их из кода Perl и вернуть только те.) Это дает вам требуемый отступ.
К сожалению, это не тривиально, и вы должны раскошелиться на оригинальную реализацию. Однако, если вам удастся реализовать чистое решение, вы можете предложить добавить точки интеграции автору indent/html.vim
. Если кроме Mason есть другие языки, которые используют эти префиксы поверх HTML, это будет дополнительным аргументом для добавления такой поддержки (и, возможно, даже ваших функций-обёрток).