我已经注意到,有一段时间,我每次在multi-web-mode运行emacs时都会收到以下消息:“关闭多网络模式;更好地传递明确的参数 ”
为什么我会这样做?多网页模式没有切换,因为我使用它并且它工作正常,但我一直收到此消息。
我该如何解决这个小麻烦?
这是我的.emacs文件中的代码,其中出现“multi-web-mode”(我使用的是Emacs 23.4):
(require 'multi-web-mode)
(setq mweb-default-major-mode 'html-mode)
(setq mweb-tags '((c++-mode "<\\?php\\|<\\? \\|<\\?=" "\\?>")
(ecmascript-mode "<script +\\(type=\"text/javascript\"\\|language=\"javascript\"\\)[^>]*>" "</script>")
(css-mode "<style +type=\"text/css\"[^>]*>" "</style>")))
(setq mweb-filename-extensions '("php" "htm" "html" "ctp" "phtml" "php4" "php5"))
(multi-web-global-mode 1)
(add-to-list 'auto-mode-alist '("\\.php\\'" . multi-web-mode))
(add-to-list 'auto-mode-alist '("\\.html\\'" . multi-web-mode))
答案 0 :(得分:0)
听起来好像有些代码导致这种模式被非交互地调用,没有参数:(multi-web-mode)
。一个常见的原因是指定一个模式函数符号用作回调,而不是指定一个调用该模式函数的函数(带参数)。
这当然是一种糟糕的形式,因为它确实可以作为一种切换,就像在交互式情况下一样(例如 M-x multi-web-mode
)。但是,从Emacs 24开始,它实际上是安全的(至少对于用标准宏定义的模式),因为非交互式调用没有模式函数的参数现在总是意味着'启用'。这可能是因为您实际上没有发现问题。
我不认为股票Emacs曾经生成过这样的消息,所以我认为它是多网络模式本身就是检测和报告这个。可能需要更新以反映Emacs 24中的更改。(编辑:看起来我错了;我猜Emacs 23.4确实产生了此警告。)
您最简单的修复可能是向您展示配置中提及multi-web-mode
的所有行,因此有人可以向您展示如何更改它以确保它传递显式参数(通常为1
启用模式)。
编辑:好的,您的问题是multi-web-mode
是次要模式(与主要模式相反),但您已在auto-mode-alist
指定了它将文件名模式映射到主要模式的机制。
因此,当我说“一个常见的原因是指定一个模式函数符号用作回调”时,原因正如我上面所建议的那样,因为那些auto-mode-alist条目将导致调用{{1 }}
在我看来,(multi-web-mode)
处理根据需要启用次要模式,因此您只需要删除错误的multi-web-global-mode
条目。