Rendendo php-mode (e altre modalità derivati ​​cc-mode) compatibile con Emacs 23

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

  •  23-08-2019
  •  | 
  •  

Domanda

Sto usando Emacs 23 e php-mode.el 1.5.0. Quando ho questo nel mio .emacs:

(require 'php-mode)

ricevo questo messaggio di errore all'avvio di Emacs:

  

Warning (inizializzazione): Si è verificato un errore durante il caricamento `/Users/kdj/.emacs':

     

errore: `c-lang-defconst' deve essere utilizzato in un file

     

Per assicurare il normale funzionamento, si dovrebbe indagare e rimuovere la   causa dell'errore nel file di inizializzazione. Inizia con Emacs   l'opzione `--debug-init' per visualizzare un backtrace errore completo.

Se valuto (require 'php-mode) dopo l'avvio di Emacs, non ho ricevuto alcun messaggio di errore.

Ho trovato un blog che indica che questo problema è specifico per Emacs 23 (vale a dire, non v'è alcun errore con Emacs 22.x), ma non dà alcuna soluzione.

Non so se questo conta, ma sto usando Mac OS X, e ho costruito Emacs dalle sorgenti del CVS di corrente, utilizzando ./configure --with-ns.

Che cosa sta succedendo qui, e / o come posso risolvere il problema?

È stato utile?

Soluzione

Ho incontrato lo stesso problema quando si cerca di ottenere il csharp-mode attivo e funzionante. Ho finalmente trovato la soluzione quando scavare nel file effettivo Emacs Lisp per 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.

Quindi, la soluzione rapida e sporca di mettere nel vostro .emacs è a caricamento automatico su estensione e non mettere (require 'php-mode) o (load "php-mode") in là. Senza ulteriori indugi,

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

Spero che questo aiuta! Ora ho solo bisogno di ottenere la roba di commutazione modalità PHP / HTML di lavoro. Mi auguro buona fortuna.

Altri suggerimenti

Funziona bene con http://mewde.googlecode.com/files /php-mode-new.el.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top