emacs lisp، كيفية الحصول على الوضع العازلة الرئيسية؟

StackOverflow https://stackoverflow.com/questions/2238418

  •  19-09-2019
  •  | 
  •  

سؤال

لقد حاولت البحث في Google وإلقاء نظرة على الدليل، ولكن لا يزال بإمكانك العثور على كيفية الحصول على الوضع الرئيسي لكائن مخزن مؤقت. هل يمكنك مساعدتي في مثال أو مرجع. شكرا

الحل الوحيد الذي يمكن أن أجده هو الاستعلام عن الوضع الرئيسي بعد تغيير المخزن المؤقت ثم تغيير مرة أخرى إلى المخزن المؤقت الأصلي. هل هناك طريقة افضل لفعله؟

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

المحلول

هل هناك مشكلة في ذلك؟

(defun buffer-mode (buffer-or-string)
  "Returns the major mode associated with a buffer."
  (with-current-buffer buffer-or-string
     major-mode))

with-current-buffer سوف استعادة المخزن المؤقت الخاص بك عند إرجاعها.

نصائح أخرى

للحصول على المخزن المؤقت الحالي:

(message "%s" major-mode)

طريقة بسيطة للقيام بذلك هي استخدام buffer-local-value وظيفة منذ ذلك الحين major-mode هو متغير محلي مؤقت:

(buffer-local-value 'major-mode (get-buffer "*scratch*"))

فقط تمديد من الإجابات السابقة - اتصل بدون حجج للحصول على وضع المخزن المؤقت الحالي:

(defun buffer-mode (&optional buffer-or-name)
  "Returns the major mode associated with a buffer.
If buffer-or-name is nil return current buffer's mode."
  (buffer-local-value 'major-mode
   (if buffer-or-name (get-buffer buffer-or-name) (current-buffer))))

على سبيل المثال في * خدش * العازلة:

(buffer-mode) => 'lisp-interaction-mode

(buffer-mode "tasks.org") => 'org-mode

حسنا، يأخذ وضع وصف حجة مخزنة اختيارية، ولكن هذا يعرض المساعدة ... وأنا لست متأكدا تماما ما يعوده ...

ولكن هذا هو أفضل ما يمكن أن أجده في بحث موجز ... آسف ...

ما عليك سوى تقييم هذا:

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