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