¿Cómo enumera los modos menores activos en emacs?
emacs
minor-mode
Solo lectura
fuente
fuente
boundp
lugar desymbolp
usted puede deshacerse delcondition-case
.describe-mode
de alguna manera puedo crear una lista de modos menores habilitados, ¿por qué no podría? Entonces, después de leer su código fuente, me di cuenta de que obtiene la lista de modos menores activos de ambosminor-mode-list
yminor-mode-alist
. Usando ladash.el
biblioteca de manipulación de listas de terceros , vine con este código:Entonces, por ejemplo, para deshabilitar todos los modos menores, use
-each
:No olvide guardar la lista de modos menores en una variable, de lo contrario tendría que reiniciar Emacs o habilitarlos por memoria.
fuente
Si desea hacer algo mediante programación con todos los búferes que tienen un determinado modo activo, entonces la mejor solución integrada, la más minimalista y más limpia es la siguiente:
Hace lo siguiente:
buffer-list
, con el búfer actualmente activo al principio de la lista (para que se trate primero, generalmente lo que desea, pero omita elcurrent-buffer
parámetro si no le importa).$buf
.with-current-buffer $buf
para decirle a Emacs que todo el código dentro del cuerpo debe ejecutarse como si se estuviera ejecutando dentro del búfer en$buf
lugar de cualquier búfer que esté mostrando en la pantalla.when <some mode variable>
es la forma correcta de comprobar si un modo está habilitado; también puede utilizarif
y otros métodos similares. De cualquier manera, el objetivo es verificar si una variable de modo principal de modo menor o mayor está configurada en el búfer. Casi todos los modos definen una variable a través de "definir" un modo, lo que hace que automáticamente creen una variable local de búfer con el nombre del modo, que es como funciona esto. Y si no tienen una variable estándar, mire su propio código fuente para ver cómo su código de "alternancia" determina cómo activarlas y desactivarlas. El 99% de ellos usan la existencia de la variable de su nombre de modo (y si no lo hacen, sugiero informarlo como un error al autor del modo). Por ejemplo, para comprobar si un búfer tiene el modo de espacios en blanco activo, diríawhen whitespace-mode
.¡Disfrutar! ¡Adelante a un código lisp mayor y más limpio!
fuente
Aquí hay un fragmento alternativo simple similar a algunos de los métodos que ya se han abordado en otras respuestas:
fuente