Fazendo php-mode (e outros modos de derivados de modo cc) compatível com Emacs 23
Pergunta
Eu estou usando Emacs 23 e php-mode.el 1.5.0. Quando eu tenho isso no meu .emacs
:
(require 'php-mode)
Recebo esta mensagem de erro quando Emacs começa:
Atenção (inicialização): um erro ocorreu durante a carga `/Users/kdj/.emacs':
erro: `c-lang-defconst' deve ser utilizado em um arquivo
Para garantir a operação normal, você deve investigar e remover o causa do erro em seu arquivo de inicialização. Iniciar Emacs com a opção `--debug-init' para ver um rastreamento de erro completa.
Se eu avaliar (require 'php-mode)
após Emacs começa, eu não receber quaisquer mensagens de erro.
Eu encontrei um blogue entrada que indica que esse problema é específico para Emacs 23 (isto é, não há nenhum erro com o Emacs 22.x), mas não dá quaisquer soluções.
Eu não sei se isso importa, mas eu estou usando o Mac OS X, e eu construí Emacs das fontes CVS atuais, utilizando ./configure --with-ns
.
O que está acontecendo aqui, e / ou como eu posso corrigi-lo?
Solução
Eu corri para o mesmo problema ao tentar obter o modo de csharp instalado e funcionando. Eu finalmente encontrei a solução quando cavando o arquivo Emacs Lisp real para modo 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.
Assim, a solução rápida e suja para colocar em seus .emacs é carregamento automático em extensão e não colocar (require 'php-mode)
ou (load "php-mode")
lá. Sem mais delongas,
(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))
Espero que isso ajude! Agora eu só preciso para obter o PHP / HTML material de mudança de modo de trabalho. Deseje-me sorte.
Outras dicas
Ele funciona muito bem com http://mewde.googlecode.com/files /php-mode-new.el .