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.

È stato utile?

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.

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