EMACS23 Проблема PHP-режима
Вопрос
Я продолжаю получать эту ошибку и аналогичные ошибки при использовании 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))))
Но решение вашей проблемы путем разрезания/вставки случайного кода из межтока не является хорошим долгосрочным решением.