سؤال

ما زلت أحصل على هذا الخطأ وأخطاء مماثلة أثناء استخدام وضع 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 Starter. أي شخص أصلح مشكلة مماثلة؟

php-mode.el الذي أستخدمه هو من emacs starter kit الذي يحدد نسخة من NXHTML. حاولت استخدام PHP-mode-1.5.0 لا يزال لا نجاح. حتى أنني حاولت استخدام أحدث إصدار من NXHTML (2.2) ، ولكن لا يزال نفس الخطأ استمر. اضطررت إلى نسخ ولصق جميع تعريفات الوظائف المفقودة من ميود حتى يعمل مع العقلانية النسبية. يجب أن أقول أنه يضيف بعض القيمة رغم ذلك. قون

والشيء المضحك ، يبدو أن هذه المشكلات هي مشكلة ubuntu karmic فقط بالنسبة لي ، كنت أستخدم نفس الأشياء على emacs on Opensuse 11.0 و 11.1 دون مشكلة واحدة.

شكرًا.

هل كانت مفيدة؟

المحلول

المشكلة هي أن شيئًا ما يحاول استدعاء الوظيفة غير المحددة 'php-template-if-hook.

سيكون من المفيد إذا قدمت رابطًا إلى المكان الذي وجدت فيه php-mode.el أنت تستخدم ، لأنه يبدو أن هناك العديد من.

الرمز 'php-template-if-hook ليس جزءًا من php-mode.el على SourceForge ، لذلك لديك نسخة مختلفة ، أو هناك شيء آخر في. EMACS يسبب المشكلة. يبدو أن هناك شيئًا ما يؤدي إلى إدخال Abbrev الذي يؤدي إلى "php-template-if-hook. ملحوظة: يبدو يستخدم الأشخاص الموجودون في Scack Overflow وضع 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