รับรายการโหมดรองที่ใช้งานอยู่ในบัฟเฟอร์


14

รับรายการโหมดรองที่ใช้งานอยู่ในบัฟเฟอร์ปัจจุบันได้อย่างไร

เอกสาร(info "(elisp)Minor Mode Conventions")พูดว่า:

 Define a variable whose name ends in ‘-mode’.  We call this the
 "mode variable".  The minor mode command should set this variable.
 The value will be ‘nil’ if the mode is disabled, and non-‘nil’ if
 the mode is enabled.  The variable should be buffer-local if the
 minor mode is buffer-local.

ฉันหยุดด้วย:

(dolist (m minor-mode-list)
  (when (symbol-value m)
    (push m modes)))

describe-mode แหล่งที่มามีบันทึกว่า:

;; Older packages do not register in minor-mode-list but only in
;; minor-mode-alist.

ฉันไม่ทราบว่ายังคงเป็นจุดที่ถูกต้อง ...


2
ไม่describe-modeให้รายการเพียงพอของโหมดรองที่ใช้งานในบัฟเฟอร์ปัจจุบันหรือไม่
ดึง

1
@ ดึงดูเหมือนว่าเขาอาจต้องการให้เป็นโปรแกรมหรือไม่
พี่เลี้ยง

1
@ พี่เลี้ยง: ใช่ฉันเดาว่า ในกรณีนั้นจุดเริ่มต้นแห่งหนึ่งคือดูรหัสสำหรับdescribe-mode- ถ้านั่นเพียงพอแล้ว
ดึง

คำตอบ:


7

ลองสิ่งนี้:

(mapcar #'car minor-mode-alist)

minor-mode-listในความเป็นจริงคุณจะพบว่าค่านี้มักจะแตกต่างจาก


13

หากคุณเพียงแค่ต้องการดูว่ามีโหมดย่อยใดบ้างที่ถูกใช้ในบัฟเฟอร์ แต่ไม่จำเป็นต้องใช้รายการที่ใช้โดยทางโปรแกรม:

M-x describe-mode

คำสั่งนี้จะเปิดบัฟเฟอร์ใหม่ที่เริ่มต้นด้วยรายการเต็มของโหมดรองของคุณรวมทั้งให้คำอธิบายสั้น ๆ ของโหมดหลักและโหมดหลักใด ๆ ที่อาจถูกเรียกใช้


1
แม้ว่าสิ่งนี้อาจไม่ตอบคำถามของ OP อย่างแน่นอน แต่นี่เป็นผลลัพธ์แรกที่ฉันพบเมื่อค้นหาคำถามนี้ เนื่องจากความคิดเห็นของ Drew แก้ไขกรณีการใช้งานของฉันฉันจึงคิดว่าสมควรได้รับคำตอบทั้งหมดสำหรับผู้ค้นหาในอนาคต
Wilduck

+1 สำหรับการสาธิตวิธีแก้ปัญหาทั่วไปที่มีปัญหามากขึ้น describe-modeมีประโยชน์อย่างยิ่ง!
ephsmith
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.