Emacs23 problema php-mode
Domanda
Continuo a ricevere questo errore e gli errori simili durante l'utilizzo di php-mode on Emacs23 su Ubuntu:
Debugger entered--Lisp error: (void-function php-template-if-hook)
php-template-if-hook()
abbrev-insert(if #("if" 0 2 (fontified t face font-lock-keyword-face)) 414 416)
#[(G73404 funs global) "[Byte Code]"
apply(#[(G73404 funs global "[Byte Code]"
(lambda (&rest --cl-rest--) (apply #[... "[Byte Code]"
expand-abbrev()
self-insert-command(1)
c-electric-paren(nil)
call-interactively(c-electric-paren nil nil)
quando digito if(
, e l'errore sotto quando si digita array(
o qualsiasi cosa che si conclude con array(
, per esempio is_array(
:
Debugger entered--Lisp error: (void-function php-template-if-hook)
php-template-if-hook()
abbrev-insert(if #("if" 0 2 (fontified t face font-lock-keyword-face)) 414 416)
#[(G73404 funs global) "[Byte code]"
apply(#[(G73404 funs global "[Byte Code]"
(lambda (&rest --cl-rest--) (apply #[... "[Byte Code]"
expand-abbrev()
self-insert-command(1)
c-electric-paren(nil)
call-interactively(c-electric-paren nil nil)
Questo errore viene generato anche quando uso il kit di emacs avviamento. Chiunque risolto un problema simile?
Il php-mode.el che uso è da emacs starter kit che fasci una versione di nxhtml . Ho provato ad utilizzare php-mode-1.5.0 ancora senza successo. Ho anche provato ad utilizzare l'ultima versione di nxhtml (2.2), ma ancora lo stesso errore persisteva. Ho dovuto copiare e incollare tutte le definizioni delle funzioni mancanti mewde per farlo funzionare con relativa sanità . Devo dire che lo fa aggiungere qualche valore però. :)
La cosa divertente, questo problema sembra essere un problema solo di Ubuntu Karmic per me, stavo usando le stesse cose sui emacs su openSUSE 11.0 e 11.1 senza un singolo problema.
Grazie.
Soluzione
Il problema è che qualcosa sta cercando di chiamare la funzione 'php-template-if-hook
non definita.
Sarebbe utile se hai fornito un link a dove hai trovato il php-mode.el
che si sta utilizzando, perché ci sembrano essere diversi .
Il 'php-template-if-hook
simbolo non è una parte del php-mode.el
su sourceforge, così hai una versione diversa, o c'è qualcos'altro nel vostro .emacs che sta causando il problema. Sembra come se qualcosa sta provocando un inserimento abbrev che porta a 'php-template-if-hook
. Nota: sembra persone su stack overflow stanno usando il php -MODE da sourceforge, quindi consiglio di trasferirsi a quello.
Una rapida ricerca google trova questo php-mode.el
, che ha definito 'php-template-if-hook
essere:
(defun php-template-if ()
"Insert an if statement."
(interactive)
(let ((start (point)))
(insert "if ")
(insert "(") ; +
(when (php-template-field "condition" nil t start (point))
(insert ") {") ; +
(newline-and-indent)
(setq start (point-marker))
(insert "\n}")
(php-indent-line-2)
(goto-char start))))
Ma, risolvere il tuo problema tagliando / codice casuale incolla da intertubes non è una buona soluzione a lungo termine.