emacs lisp، كيفية الحصول على الوضع العازلة الرئيسية؟
-
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)