あります:emacs23 PHPモードの問題
質問
私はUbuntuであります:emacs23上のphp-modeを使用している間、このエラーと同様のエラーを得続けるます:
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)
Iは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モード-1.5.0 に使用してみましたまだ成功。私もnxhtml(2.2)の最新バージョンを使用してみましたが、それでも同じエラーが持続しました。私はコピー&ペーストする必要がありました それは相対的な正気で動作するためには、 mewdeするから欠落しているすべての関数定義。私はそれがいくつかの値を追加しないことを言わなければなりません。 :)
面白いことは、この問題は、私は単一問題なしのopenSUSE 11.0と11.1でemacsの上で同じものを使用していた私にとってはUbuntuのカルマだけの問題のようです。
感謝します。
解決
問題は何かが未定義の関数を呼び出す'php-template-if-hook
しようとしているということです。
php-mode.el
を発見した場所へのリンクを提供する場合は、<のhref =「http://www.emacswiki.org/emacs/PhpMode」のrel =」があるように思われるので、これは、便利になるだろうnofollowをnoreferrer ">いくつかのを。
のシンボル'php-template-if-hook
ので、SourceForgeの php-mode.el
するの一部ではありませんあなたは別のバージョンを持っているか、問題を引き起こしているあなたの.emacsで何か他のものがあります。何かがphp-template-if-hook
」につながる略語挿入をトリガしているかのように見えます。 注:のスタックオーバーフロー上のの人々は、PHPを使用しているように見えますsourceforgeのから-modeので、私はそのいずれかに移動するお勧めします。
迅速な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))))
しかし、intertubesからランダムコードを貼り付け/切断することで、あなたの問題を解決することは良い長期的な解決策ではありません。