我目前在emacs中为
PHP开发的设置有各种不足之处.我经常使用混合模式的html和PHP.我想让模式能够识别我所处的上下文和格式格式.我特别感兴趣的是适当的标签.这是我最重要的功能.正确的着色会很好,但是如果它在一段时间内混乱就行了.
我目前在MacOS X的Emacs 24.3中使用多网页模式和默认的PHP模式.
最令人沮丧的问题之一是结合heredoc语法:echo<<我当前的系统不认识到这个语法不需要标签.我通常会得到如下警告:
Indentation fails badly with mixed HTML/PHP in the HTML part in plaín `PHP-mode'. To get indentation to work you must use an Emacs library that supports 'multiple major modes' in a buffer. Parts of the buffer will then be in `PHP-mode' and parts in for example `html-mode'. Known such libraries are: mumamo,mmm-mode,multi-mode You have these available in your `load-path': mumamo
我已经尝试过使用mumao / nxhtml,但没有给我想要的结果.在某些方面更糟糕.我真的非常感谢任何人们为获得emacs的工作PHP开发环境设置的提示.
我使用web模式(
http://web-mode.org/)混合HTML / PHP文件和PHP模式为纯PHP文件.最新版本的PHP-mode还推荐使用混合HTML / PHP文件的Web模式:
https://github.com/ejmr/php-mode#avoid-html-template-compatibility.
不同于其他模式,如mmm模式,mumamo或多网络模式,尝试将不同的行为应用于缓冲区的不同部分,Web模式了解可与HTML混合的所有可用语法/模板.你也可以使用web模式来混合HTML文件/模板,如Twig,Django,ERB …实际上我使用web模式来涉及到HTML.
有一个PHP模板的抓住:其他模板系统有不同的文件扩展名,所以很容易自动切换模式,但PHP模板通常使用相同的.PHP扩展名;所以我必须通过文件夹进行切换,有时手动调用M-x Web模式.这是我目前的配置:
(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块到纯文件中的功能).代码将更容易阅读/遵循.