【问题标题】:How do I configure emacs for proper PHP development?如何配置 emacs 以进行正确的 PHP 开发?
【发布时间】:2013-07-25 02:00:28
【问题描述】:

我目前在 emacs 中进行 PHP 开发的设置有很多缺点。我经常使用html和php的混合模式。我希望该模式能够识别我所处的上下文并适当地格式化。我对适当的标签特别感兴趣。这对我来说是最重要的功能。正确的颜色会很好,但如果偶尔弄乱也没关系。

我目前在 MacOS X 上的 Emacs 24.3 中使用 multi-web-mode 和默认的 php-mode

最令人沮丧的问题之一是合并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 开发环境的任何提示。

【问题讨论】:

  • Re:投票结束这个问题。帮助中心指出,针对software tools commonly used by programmers 的问题属于 Stack Overflow 的范围。

标签: php emacs


【解决方案1】:

我对混合的 HTML/PHP 文件使用 web-mode (http://web-mode.org/),对纯 PHP 文件使用 php-mode。最新版本的php-mode 还推荐web-mode 用于混合HTML/PHP 文件:https://github.com/ejmr/php-mode#avoid-html-template-compatibility

mmm-modemumamomulti-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$")

顺便说一句,尝试分离您的 PHP 文件和模板,并使混合的 HTML/PHP 文件尽可能简单(将较长的 PHP 块重构为纯文件中的函数)。代码将更容易阅读/遵循。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-17
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多