Emacs23 problema en modo php
Pregunta
Sigo recibiendo este error y similares errores durante el uso de php-mode en Emacs23 en 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)
cuando escribo if(
, y el error abajo cuando escribo array(
o cualquier cosa que termina con array(
, por ejemplo 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)
Este error se eleva incluso cuando se utiliza el kit de arranque emacs. Cualquier persona fija un problema similar?
El php-mode.el que uso es de la emacs kit de inicio que lía una versión de nxhtml . He intentado utilizar modo php-1.5.0 aún sin éxito. Incluso he intentado usar la versión más reciente de nxhtml (2.2), pero aún persistía el mismo error. Tuve que copiar y pegar todas las definiciones de las funciones que faltan en mewde para que funcione con relativa cordura . Tengo que decir que se le añade algún valor sin embargo. :)
Lo curioso, este problema parece ser una única Ubuntu Karmic problema para mí, yo estaba usando el mismo material en las emacs en openSUSE 11.0 y 11.1 sin un solo problema.
Gracias.
Solución
El problema es que algo está tratando de llamar a la función no definida 'php-template-if-hook
.
Sería útil si ya ha proporcionado un enlace a donde se encuentra el php-mode.el
que está utilizando, porque parece que hay varios .
El símbolo 'php-template-if-hook
no es una parte de la php-mode.el
en sourceforge, por lo que o bien tienen una versión diferente, o hay algo más en su .emacs que está causando el problema. Parece como si algo está provocando una inserción de abreviaturas que conduce a 'php-template-if-hook
. Nota: parece que gente en desbordamiento de pila están utilizando el php -Modo de SourceForge, así que recomiendo mover a esa pregunta.
Una rápida búsqueda en Google encuentra este php-mode.el
, que define 'php-template-if-hook
a ser:
(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))))
Sin embargo, la solución de su problema cortando / código aleatorio pegar desde los intertubes no es una buena solución a largo plazo.