Обеспечение совместимости php-mode (и других производных от cc-mode режимов) с Emacs 23
Вопрос
Я использую Emacs 23 и php-mode.el 1.5.0.Когда у меня это будет в моем .emacs
:
(require 'php-mode)
Я получаю это сообщение об ошибке при запуске Emacs:
Предупреждение (инициализация):Произошла ошибка при загрузке `/Users/kdj/.emacs':
ошибка:`c-lang-defconst' должен использоваться в файле
Чтобы обеспечить нормальную работу, вам следует изучить и устранить причину ошибки в вашем файле инициализации.Запустите Emacs с помощью опции `--debug-init', чтобы просмотреть полную обратную трассировку ошибок.
Если я оцениваю (require 'php-mode)
после запуска Emacs я не получаю никаких сообщений об ошибках.
Я нашел запись в блоге что указывает на то, что эта проблема специфична для Emacs 23 (то есть в Emacs 22.x ошибки нет), но она не дает никаких решений.
Я не знаю, имеет ли это значение, но я использую Mac OS X, и я создал Emacs из текущих исходных текстов CVS, используя ./configure --with-ns
.
Что здесь происходит и / или как я могу это исправить?
Решение
Я столкнулся с той же проблемой при попытке запустить csharp-mode.Я, наконец, нашел решение, когда копался в реальном файле Emacs Lisp для 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.
Итак, быстрое и грязное исправление для вашего .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.Пожелай мне удачи.
Другие советы
Это прекрасно работает с http://mewde.googlecode.com/files/php-mode-new.el.