如何在Emacs中关闭php-indent警告

Use*_*uck 5 html php emacs elisp emacs23

在Emacs中使用PHP代码和HTML标记编辑PHP文件时,我继续收到警告:

Warning (php-indent):
        Indentation fails badly with mixed HTML and PHP.
        Look for an Emacs Lisp library that supports "multiple
        major modes" like mumamo, mmm-mode or multi-mode.
Run Code Online (Sandbox Code Playgroud)

它弹出在我的窗口的底部,并占据了我的编辑屏幕的一半。如何关闭此功能?

我知道可以添加各种“附加组件”和模式,以使Emacs很好地格式化PHP + HTML,但是我只想关闭警告。我该怎么办?

编辑:

这是php-mode.el上面错误似乎来自文件的一部分:

Warning (php-indent):
        Indentation fails badly with mixed HTML and PHP.
        Look for an Emacs Lisp library that supports "multiple
        major modes" like mumamo, mmm-mode or multi-mode.
Run Code Online (Sandbox Code Playgroud)

Dre*_*rew 3

Grepping Emacs 源代码,我没有在任何地方找到该消息。它可能来自您从初始化文件加载的其他代码。

检查您加载的库——grep它们是否有消息。这将使您了解如何抑制该消息。这取决于它是如何创建的等。

例如,您可以建议 ( defadvice) 发出消息的函数,但您可能必须使用该建议将函数的代码替换为不发出消息的类似代码。

但首先要找到罪魁祸首的代码。可能有一种简单的方法可以禁止该消息,例如用户选项。

更新 - -

好的,所以发出警告的函数是lwarn. 您可以立即(至少作为一种解决方法)自定义选项warning-minimum-level,并可能warning-minimum-log-level抑制警告。但这也会抑制同级别的其他警告。

调用的函数lwarnphp-check-html-for-indentation,并且它无条件地调用它。在代码中搜索对php-check-html-for-indentation, 的调用,看看是否可能有条件地调用该函数。幸运的是,您可以设置或更改一个条件(甚至可能是用户选项)来禁止php-check-html-for-indentation被调用。

如果抑制php-check-html-for-indentation不是正确的事情,因为它除了警告之外还做了其他事情,那么你最好的方法是建议 php-check-html-for-indentation,本质上按原样重新定义它,但不调用lwarn。为此,您的defadviceforphp-check-html-for-indentation将重用原始定义,但不调用lwarn也不使用任何ad-do-it. 请参阅 Elisp 手册,节点Advising FunctionsAround Advice.