Ответ 1
Я использую web-mode
(http://web-mode.org/) для смешанных файлов HTML/PHP и php-mode
для чистых файлов PHP. Последняя версия php-mode
также рекомендовала web-mode
для смешанных файлов HTML/PHP: https://github.com/ejmr/php-mode#avoid-html-template-compatibility.
В отличие от других режимов, таких как mmm-mode
, mumamo
или multi-web-mode
, которые пытаются применять разные типы поведения к различным частям буфера, web-mode
знает обо всех доступных синтаксисах/шаблонах, которые могут быть смешаны с HTML. Вы также можете использовать web-mode
для смешанных HTML файлов/шаблонов, таких как Twig, Django, ERB... На самом деле я использую web-mode
для чего-либо, связанного с HTML.
Существует шаблон для шаблона PHP: Другие системы шаблонов имеют разное расширение файла, поэтому легко переключать режим автоматически, но шаблоны PHP обычно используют одно и то же расширение .php
; поэтому я должен заставить его переключаться по папкам или иногда вручную вызывать M-x web-mode. Здесь моя текущая конфигурация:
(defun add-auto-mode (mode &rest patterns)
(mapc (lambda (pattern)
(add-to-list 'auto-mode-alist (cons pattern mode)))
patterns))
(add-auto-mode 'web-mode
"*html*" "*twig*" "*tmpl*" "\\.erb" "\\.rhtml$" "\\.ejs$" "\\.hbs$"
"\\.ctp$" "\\.tpl$" "/\\(views\\|html\\|templates\\)/.*\\.php$")
BTW, попробуйте отделить ваши PHP файлы и шаблоны и сохранить смешанный файл HTML/PHP максимально простым (рефакторинг длинных блоков PHP в функции в чистом файле). Код будет легче читать/следовать.