2009-05-22 37 views
29

Tôi đang sử dụng Emacs 23 và php-mode.el 1.5.0. Khi tôi có điều này trong .emacs tôi:Thực hiện chế độ php (và các chế độ dẫn xuất chế độ cc khác) tương thích với Emacs 23

(require 'php-mode) 

tôi nhận được thông báo lỗi này khi Emacs bắt đầu:

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.

Nếu tôi đánh giá (require 'php-mode) sau Emacs bắt đầu, tôi không nhận được bất kỳ thông báo lỗi.

Tôi tìm thấy số blog entry cho biết vấn đề này là cụ thể đối với Emacs 23 (có nghĩa là, không có lỗi với Emacs 22.x), nhưng nó không đưa ra bất kỳ giải pháp nào.

Tôi không biết điều này có quan trọng hay không, nhưng tôi đang sử dụng Mac   OS   X và tôi đã tạo Emac từ nguồn CVS hiện tại bằng cách sử dụng ./configure --with-ns.

Điều gì đang xảy ra ở đây và/hoặc cách tôi có thể khắc phục sự cố?

+0

Tôi sử dụng Emacs 23 và 'php-mode' được gửi cùng với Emacs Starter Kit (cũng là v1.5.0). Nó hoạt động. Bạn có thể có một số chế độ khác trong .emacs của bạn có tác dụng 'php-mode'. –

+0

Tôi đã thay đổi các .emac của mình thành chỉ "(đường dẫn tải bổ sung" danh sách "~/elisp") (yêu cầu 'chế độ php)' và sự cố vẫn tiếp diễn. –

+0

Bạn có thể đặt dấu chấm của mình ở đâu đó trực tuyến không? –

Trả lời

51

Tôi đã gặp sự cố tương tự khi cố gắng chạy chế độ csharp và chạy. Cuối cùng tôi đã tìm thấy các giải pháp khi đào sâu vào các tập tin Emacs Lisp thực tế cho CSharp-mode:

;; 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. 

Vì vậy, việc sửa chữa nhanh chóng và dơ bẩn để đưa vào emacs của bạn là để tải tự động gia hạn và không đặt (require 'php-mode) hoặc (load "php-mode") trong đó. Nếu không có thêm quảng cáo,

(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)) 

Tôi hy vọng điều này sẽ hữu ích! Bây giờ tôi chỉ cần có được công cụ chuyển đổi chế độ PHP/HTML hoạt động. Chúc tôi may mắn.

+0

Tuyệt vời! Điều này hoạt động hoàn hảo. –

+0

cũng hoạt động cho tôi quá – Matt

+0

Muộn cho bữa tiệc, nhưng cảm ơn rất nhiều vì điều này. Tôi không gặp vấn đề gì với Linux, nhưng trên Windows, tôi cũng gặp phải lỗi này, vì nxhtml tự động tải rất nhiều nội dung. Tôi đã xóa các tệp ccc * .cc của mình và các lỗi đã biến mất. – monksp

Các vấn đề liên quan