Я столкнулся с той же проблемой при попытке запустить и запустить csharp-mode. Наконец-то я нашел решение, когда копался в самом файле Emacs Lisp для режима csharp:
;; 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. Пожелай мне удачи.