سؤال

ايماكس 23.2 في emacs-starter-kit v1 لديه C-x C-i (أو ido-imenu) (على غرار Sublime Text's Cmd+R). إيماكس24 في emacs-starter-kit v2 يفتقر إلى هذه الوظيفة.وجدت هذه القضية جيثب و إصلاح, ، والتي تحاول إعادة إنشاء الوظيفة.بينما هذا ido-imenu يعمل في elisp-mode, ، توقف عن العمل في ruby-mode.انا حصلت:

imenu--make-index-alist: No items suitable for an index found in this buffer
  1. هل اكتشف أحد كيفية جعل هذا يعمل؟
  2. لماذا تم إخراج هذا من Emacs24؟
  3. هل هناك بديل جديد لهذه الوظيفة؟
هل كانت مفيدة؟

المحلول 2

لذلك فهمت الأمر أخيراً بعد قراءتي تحديد قائمة Imenu للوضع قسم على emacs-wiki مرة أخرى.

اجابة قصيرة:تحتاج إلى إضافة هذا الشيء إلى التخصيص الخاص بك.انت حر لتضيف المزيد أنواع إلى القائمة (أنا سعيد بالطرق فقط).

(add-hook 'ruby-mode-hook
          (lambda ()
            (set (make-local-variable imenu-generic-expression)
                 '(("Methods"  "^\\( *\\(def\\) +.+\\)"          1)
                   ))))

إجابة أطول:حاولت أولاً تحديد أ ruby-imenu-generic-expression وظيفة وتعيين ذلك ل imenu-generic-expression باستخدام ruby-mode-hook:

(defvar ruby-imenu-generic-expression
  '(("Methods"  "^\\( *\\(def\\) +.+\\)"          1))
  "The imenu regex to parse an outline of the ruby file")

(defun ruby-set-imenu-generic-expression ()
  (make-local-variable 'imenu-generic-expression)
  (make-local-variable 'imenu-create-index-function)
  (setq imenu-create-index-function 'imenu-default-create-index-function)
  (setq imenu-generic-expression ruby-imenu-generic-expression))

(add-hook 'ruby-mode-hook 'ruby-set-imenu-generic-expression)

لكن هذا لم ينجح (سأحصل على نفس الخطأ كما كان من قبل).مزيد من القراءة لل تحديد قائمة Imenu للوضع قسم أظهر لي الطريق.الآن، أنا لست elisp خبير، وهذه هي فرضيتي:في الأساس، تعمل الطريقة المذكورة أعلاه مع الأوضاع التي يكون فيها ملف

يدعم الوضع الرئيسي نسخة محلية عازلة من المتغير "الحقيقي"، "imenu-generic-expression".إذا لم يقم الوضع الخاص بك بذلك، فسيتعين عليك الاعتماد على الخطاف.

المثال ل foo-mode أوضحت كيفية القيام بذلك ruby-mode.لذلك يبدو أن ruby-mode ليس لديه نسخة عازلة محلية من الحقيقي imenu-generic-expression عامل.ما زلت لا أستطيع شرح سبب نجاحه في Emacs 23.2 (مع ESK v1) ولكنه لا يعمل على Emacs24، ولكن على الأقل وجدت حلاً عمليًا.

نصائح أخرى

نظرًا لأن الوظيفة جزء من ESK (على عكس شيء تم دمجه مع Emacs)، فمن الأفضل أن تقوم بالإبلاغ عن الخطأ في المراحل الأولية.في ملاحظة ذات صلة، يقدم المنافس الرئيسي لـ ESK Emacs Prelude نفس الوظيفة (مرتبطة بـ ج-ج ط افتراضيًا) ويبدو أنه يعمل بشكل جيد مع وضع روبي في Emacs 24. هنا يمكنك العثور على المزيد حول ido-imenu.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top