Emacs23 проблема php-режима - PullRequest
       30

Emacs23 проблема php-режима

2 голосов
/ 18 ноября 2009

Я получаю эту ошибку и подобные ошибки при использовании php-mode на Emacs23 в 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)

, когда я набираю if(, и ошибка ниже, когда я набираю array( или что-либо, заканчивающееся array(, например, 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)

Эта ошибка возникает даже тогда, когда я использую стартовый комплект emacs. Кто-нибудь исправил подобную проблему?

Я использую php-mode.el из начального набора emacs , который включает версию nxhtml . Я пытался использовать php-mode-1.5.0 , но все равно безуспешно. Я даже пытался использовать последнюю версию nxhtml (2.2), но ошибка все еще сохранялась. Я должен был скопировать и вставить все определения функций отсутствуют в mewde , чтобы он работал с относительной рассудительностью. Я должен сказать, что это добавляет некоторую ценность, хотя. :)

Забавно, эти проблемы, по-моему, являются единственной проблемой Ubuntu Karmic для меня, я использовал те же вещи в emacs на opensuse 11.0 и 11.1 без единой проблемы.

Спасибо.

1 Ответ

1 голос
/ 18 ноября 2009

Проблема в том, что что-то пытается вызвать неопределенную функцию 'php-template-if-hook.

Было бы полезно, если бы вы указали ссылку на то место, где вы нашли php-mode.el, который вы используете, потому что, похоже, несколько .

Символ 'php-template-if-hook не является частью php-mode.el на sourceforge, поэтому у вас либо другая версия, либо в вашем .emacs есть что-то еще, что вызывает проблему. Похоже, что-то вызывает вставку аббревиатуры, которая приводит к 'php-template-if-hook. Примечание: похоже, что люди из-за переполнения стека используют php-режим из sourceforge, поэтому я рекомендую перейти к этому.

Быстрый поиск в Google находит это php-mode.el, которое определило 'php-template-if-hook как:

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

Но решение вашей проблемы путем вырезания / вставки случайного кода из трубок не является хорошим долгосрочным решением.

...