¿Cómo se enumeran los modos menores activos en emacs?¿Cómo se enumeran los modos menores activos en emacs?
Respuesta
C-h m
o M-x describe-mode
muestra todos los modos menores activos (y el modo principal) y una breve descripción de cada uno.
Una lista de todos los comandos de modo menor se almacena en la variable minor-mode-list
. Averiguar si están activos o no se suele hacer mediante la comprobación de la variable del mismo nombre. Así que usted puede hacer algo como esto:
(defun which-active-modes()
"Give a message of which minor modes are enabled in the current buffer."
(interactive)
(let ((active-modes))
(mapc (lambda (mode) (condition-case nil
(if (and (symbolp mode) (symbol-value mode))
(add-to-list 'active-modes mode))
(error nil)))
minor-mode-list)
(message "Active modes are %s" active-modes)))
Nota: esto sólo funciona para el búfer en uso (debido a que los modos menores podrían estar sólo disponible en determinados tampones).
describe-mode
de alguna manera puede venir con 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 tanto de minor-mode-list
como de minor-mode-alist
. El uso de 3 ª parte dash.el
biblioteca de listas manipulación Vine con este código:
(--filter (and (boundp it) (symbol-value it)) minor-mode-list)
Así, por ejemplo, para desactivar todos los modos menores, utilizar -each
:
(--each (--filter (and (boundp it) (symbol-value it)) minor-mode-list)
(funcall it -1))
No se olvide de guardar la lista de modos menores en una variable, de lo contrario tendrías que reiniciar Emacs o habilitarlos por memoria.
Si desea programación hacer algo con todos los tampones que tienen un cierto modo activo, entonces el mejor limpia solución, más minimalista,, incorporada es la siguiente:
(dolist ($buf (buffer-list (current-buffer)))
(with-current-buffer $buf
(when some-buffer-local-minor-or-major-mode-variable-you-want-to-find
(message "x %s" $buf))))
lo hace el siguiente:
- recuperar una lista de todos los buffers a través
buffer-list
, con el tampón activa en ese momento a la cabeza de la lista (por lo que se trata en primer lugar, por lo general lo que quiere, pero dejar de lado el parámetrocurrent-buffer
si no lo hace cuidado). - Pasa por la lista de búfers y asigna cada nombre de búfer a la variable
$buf
. - Utilice
with-current-buffer $buf
para decirle a Emacs que todo el código dentro del cuerpo debería ejecutarse como si se estuviera ejecutando dentro del búfer$buf
en lugar del búfer que realmente visualiza en la pantalla. when <some mode variable>
es la forma correcta de comprobar si un modo está habilitado; también puede usarif
y otros métodos similares. De cualquier manera, el objetivo es verificar si una variable de modo principal menor o principal está configurada en el búfer. Casi todos los modos definen una variable a través de "definir" un modo, que automáticamente hace que creen una variable local de buffer nombrada después del modo, que es cómo funciona esto. Y si no tienen una variable estándar, mira su propio código fuente para ver cómo su código "alternar" determina cómo activar y desactivar. El 99% de ellos usa la existencia de la variable de su nombre de modo (y si no lo hacen, sugiero informar eso como un error al autor del modo). Por ejemplo, para verificar si un búfer tiene el modo de espacio en blanco activo, diríawhen whitespace-mode
.- Después de eso, solo emite un mensaje al búfer de mensajes, con una "x" y el nombre del búfer que tenía el modo activo. Ahí es donde pondrías tu propio código, para hacer lo que quisieras hacer con el buffer descubierto.
Enjoy! ¡Hacia un código de lisp mayor y más limpio!
Aquí es un simple fragmento alternativa similar a algunos de los métodos que ya han sido abordadas en otras respuestas:
(delq nil
(mapcar
(lambda (x)
(let ((car-x (car x)))
(when (and (symbolp car-x) (symbol-value car-x))
x)))
minor-mode-alist))
- 1. Emacs: ¿cómo ingreso automáticamente modos menores cuando ingreso a un modo principal?
- 2. ¿Cómo se enumeran los submódulos activos en un proyecto de Maven?
- 3. ¿Cómo se enumeran los identificadores del proceso?
- 4. HDFS: ¿Cómo se enumeran los archivos recursivamente?
- 5. Recargar .emacs para todos los búferes activos
- 6. ¿Cómo se enumeran los volúmenes en Mac OS X?
- 7. ¿Cómo se enumeran los archivos en un directorio estático?
- 8. ¿Cómo se enumeran todos los procesos secundarios en python?
- 9. ¿Cómo se enumeran los miembros del objeto COM en C#?
- 10. ¿Cómo instalar nuevos modos en emacs 23 en OS X?
- 11. ¿Cómo se enumeran las pestañas en vim?
- 12. Emacs qué modos estoy usando actualmente
- 13. ¿Cómo habilitar el modo flyspell en emacs para todos los archivos y todos los modos principales?
- 14. Cambie los modos de Emacs dentro de etiquetas específicas
- 15. ¿Cómo selecciona Emacs qué modos secundarios enumerar en la línea de modo?
- 16. Mejor sangría en el modo de dos modos en Emacs
- 17. Modo Viper en todos los modos
- 18. Buenos recursos sobre cómo escribir modos de Emacs?
- 19. modos Emacs para flexión y bisonte, o eliminación de sangría automática para estos modos?
- 20. Emacs Modos: "Comando intentado utilizar minibuffer mientras que en minibuffer"
- 21. ¿Cómo se enumeran las funciones presentes en el archivo objeto?
- 22. ¿Cómo deshabilitar los tics menores de log-plot en Matplotlib?
- 23. org-mode fechas en otros modos de Emacs
- 24. ¿Cómo se enumeran todas las vistas indizadas en SQL Server?
- 25. ¿Cómo se enumeran las propiedades de un objeto en Python?
- 26. ¿Cómo se enumeran las variables locales en Ruby?
- 27. ¿Cómo se enumeran los objetos actualmente disponibles en el alcance actual en ruby?
- 28. ¿Cómo mantener activos los perfiles de Maven activos por defecto, incluso si se activa otro perfil?
- 29. ¿Cómo se enumeran todos los factores desencadenantes en una base de datos MySQL?
- 30. ¿Cómo se enumeran los contenedores en el almacenamiento de blobs azul?
complemento a lista dentro de un mapa? complejo. – jrockway
@jrockway No es mi momento de ceceo más orgulloso. –