Вопрос

Я продолжаю получать эту ошибку и аналогичные ошибки при использовании PHP-режима на 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 Starter Kit который объединяет версию nxhtml. Анкет Я пытался использовать PHP-моде-1.5.0 Все еще нет успеха. Я даже попытался использовать последнюю версию NXHTML (2.2), но все же самая ошибка сохранялась. Мне пришлось скопировать и вставить все определения функций, отсутствующих в Mewde чтобы работать с относительным здравомыслием. Я должен сказать, что это действительно добавляет какую -то ценность. :)

Самое смешное, что эта проблема, кажется, для меня проблема Ubuntu Karmic, я использовал то же самое на Emacs на OpenSuse 11.0 и 11.1 без одной проблемы.

Спасибо.

Это было полезно?

Решение

Проблема в том, что что -то пытается назвать неопределенную функцию '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))))

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top