2009-05-22 24 views
29

私はEmacs 23とphp-mode.el 1.5.0を使用しています。私は私の.emacsでこの持っている場合:phpモード(およびその他のccモードの派生モード)をEmacs 23と互換性を持たせるために

(require 'php-mode) 

をEmacsが起動するとき、私は、このエラーメッセージが表示されます:

Warning (initialization): An error occurred while loading `/Users/kdj/.emacs':

error: `c-lang-defconst' must be used in a file

To ensure normal operation, you should investigate and remove the cause of the error in your initialization file. Start Emacs with the `--debug-init' option to view a complete error backtrace.

Emacsが起動した後、私は(require 'php-mode)を評価した場合、私はすべてのエラーメッセージを得ることはありません。

blog entryこれは、この問題がEmacs 23固有のものである(つまり、Emacs 22.xでエラーがない)ことを示していますが、解決策を提示していません。

Macの場合  OS   Xを使用していて、現在のCVSソースからEmacsを./configure --with-nsでビルドしました。

ここでは何が起こっているのですか、どのように修正できますか?

+0

私はEmacs 23と、Emacsスターターキット(v1.5.0)に同梱されている 'php-mode'を使用しています。できます。 .emacsには 'php-mode'に影響を与えるいくつかのモードがあります。 –

+0

私は自分の.emacsを単に "(add-to-list 'load-path"〜/ elisp ")(php-modeが必要です)に変更しましたが、問題は解決しません。 –

+0

オンラインでどこでもドットメックを置くことができますか? –

答えて

51

csharpモードを起動して実行しようとしたときに同じ問題が発生しました。 CSHARPモードの実際の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モードの切り替え作業をする必要があります。私に運が欲しい。

+0

恐ろしいです!これは完全に機能します。 –

+0

も私のために働いています – Matt

+0

パーティーに遅れていますが、これにはとても感謝しています。私はLinuxで問題はありませんが、Windowsでは、nxhtmlがそれ自身で多くのものを自動ロードするので、同じエラーが発生していました。私は自分のcc - *。elcファイルを削除して、エラーは消え去った。 – monksp