Obtener una lista de modos menores activos en el búfer


14

¿Cómo obtener una lista de modos menores activos en el búfer actual?

Los doctores (info "(elisp)Minor Mode Conventions")dicen:

 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.

Me detengo con:

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

describe-mode las fuentes tienen notas que:

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

No sé si ese punto sigue siendo válido ...


2
¿No le describe-modeda una lista adecuada de los modos menores activos en el búfer actual?
Dibujó el

1
@Drew Parece que tal vez lo quiere programáticamente?
niñera

1
@nanny: Sí, lo adiviné. En esos casos, un lugar para comenzar sería buscar el código describe-mode, si eso es adecuado.
Dibujó el

Respuestas:


7

Prueba esto:

(mapcar #'car minor-mode-alist)

De hecho, encontrará que este valor a menudo difiere de minor-mode-list.


13

Si solo está buscando ver qué modos menores se están utilizando en un búfer, pero no necesita usar la lista mediante programación:

M-x describe-mode

Este comando abrirá un nuevo búfer que comienza con una lista completa de sus modos menores, además de proporcionar una breve descripción de los modos principales y los modos principales que se hayan ejecutado.


1
Si bien esto puede no responder exactamente a la pregunta del OP, este fue el primer resultado que encontré al buscar esta pregunta. Dado que el comentario de Drew resolvió mi caso de uso, pensé que merecía una respuesta completa para futuros buscadores.
Wilduck

+1 por demostrar la solución más general del problema. describe-modees especialmente útil!
ephsmith
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.