Fazendo php-mode (e outros modos de derivados de modo cc) compatível com Emacs 23

StackOverflow https://stackoverflow.com/questions/898063

  •  23-08-2019
  •  | 
  •  

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?

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top