Dapatkan daftar mode minor aktif di buffer

14

Bagaimana mendapatkan daftar mode minor aktif di buffer saat ini?

Documents (info "(elisp)Minor Mode Conventions")katakan:

 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.

Saya berhenti dengan:

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

describe-mode sumber memiliki catatan bahwa:

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

Saya tidak tahu apakah itu masih berlaku ...

gavenkoa
sumber
2
Tidak describe-modememberi Anda daftar mode minor aktif yang cukup di buffer saat ini?
Drew
1
@Drew Kedengarannya seperti dia mungkin menginginkannya secara terprogram?
pengasuh
1
@nanny: Ya, saya rasa begitu. Dalam hal ini, satu tempat untuk memulai adalah melihat kode untuk describe-mode- jika itu cukup memadai.
Drew

Jawaban:

7

Coba ini:

(mapcar #'car minor-mode-alist)

Bahkan, Anda akan menemukan bahwa nilai ini sering berbeda minor-mode-list.

PythonNut
sumber
13

Jika Anda hanya ingin melihat mode minor apa yang digunakan dalam buffer, tetapi tidak perlu menggunakan daftar, gunakan program:

M-x describe-mode

Perintah ini akan membuka buffer baru yang dimulai dengan daftar lengkap mode minor Anda, serta memberikan deskripsi singkat tentang mode utama, dan mode induk apa pun yang mungkin telah dijalankan.

Wilduck
sumber
1
Meskipun ini mungkin tidak menjawab pertanyaan OP, ini adalah hasil pertama yang saya temukan ketika mencari pertanyaan ini. Karena komentar Drew memecahkan kasus penggunaan saya, saya pikir itu layak mendapat jawaban penuh untuk pencari masa depan.
Wilduck
+1 untuk menunjukkan solusi tujuan yang lebih umum untuk masalah tersebut. describe-modesangat berguna!
ephsmith