当前位置:  开发笔记 > 编程语言 > 正文

使php模式(和其他cc模式派生模式)与Emacs 23兼容

如何解决《使php模式(和其他cc模式派生模式)与Emacs23兼容》经验,为你挑选了1个好方法。

我使用的是Emacs 23和php-mode.el 1.5.0.当我在我的这个.emacs:

(require 'php-mode)

我在Emacs启动时收到此错误消息:

警告(初始化):加载`/Users/kdj/.emacs'时出错:

错误:必须在文件中使用`c-lang-defconst'

为确保正常运行,您应该调查并删除初始化文件中的错误原因.使用`--debug-init'选项启动Emacs以查看完整的错误回溯.

如果我(require 'php-mode)在Emacs启动后评估,我不会收到任何错误消息.

我找到了一个博客条目,表明此问题是Emacs 23特有的(也就是说,Emacs 22.x没有错误),但它没有提供任何解决方案.

我不知道这是否重要,但我使用的是Mac OS X,并且我使用当前的CVS源构建了Emacs ./configure --with-ns.

这里发生了什么,和/或我如何解决它?



1> Jeremy Groza..:

我试图让csharp模式启动并运行时遇到了同样的问题.当我深入研究csharp-mode的实际Emacs Lisp文件时,我终于找到了解决方案:

;;   This code doesn't seem to work when you compile it, then
;;   load/require in the Emacs file. You will get an error (error
;;   "`c-lang-defconst' must be used in a file") which happens because
;;   cc-mode doesn't think it is in a buffer while loading directly
;;   from the init. However, if you call it based on a file extension,
;;   it works properly. Interestingly enough, this doesn't happen if
;;   you don't byte-compile cc-mode.

因此,放入.emacs的快速而肮脏的修复是在扩展上自动加载而不是放在(require 'php-mode)(load "php-mode")放在那里.无需再费周折,

(autoload 'php-mode "php-mode" "Major mode for editing php code." t)
(add-to-list 'auto-mode-alist '("\\.php$" . php-mode))
(add-to-list 'auto-mode-alist '("\\.inc$" . php-mode))

我希望这有帮助!现在我只需要让PHP/HTML模式切换工作.祝我好运.

推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有