Mi nombre es Fernando Briano y soy programador.

Emacs – Personalizando el mode line

En Emacs existe el Mode Line, una barra que describe lo que está pasando en el buffer actual. Por defecto, la línea tiene un formato bastante gris con información que puede o no sernos útil:

Emacs Mode Line por defecto

Los primeros guiones pertenecen al character set, seguidos de unos asteriscos si el archivo tiene cambios que no guardamos, nombre del buffer, posición, número de línea, información de los modos, etc. En general por lo menos en mi caso no le daba mucha importancia, más allá del nombre del archivo que estaba editando.

Hasta ahora lo único que le había agregado a mi Mode Line era Nyan Mode. Que de todas formas no es que se lo haya agregado, simplemente agregué el modo y el querido Nyan Cat paseaba por mi línea de modos a medida que avanzaba o retrocedía en un archivo.

Investigando un poco por Internet sobre formas de personalizar esta parte de Emacs para que me fuera un poco más útil, me encontré con un post de Amit Patel y su personalización:

Emacs: custom mode line – From Amit’s Thoughts

Me gustó bastante porque además de mostrar información útil de manera más visual, también usa Nyan Mode. Así que usé su código como plantilla y empecé a modificarlo hasta que quedó a mi gusto.

Cambié colores, tamaños y dejé de mostrar algunas cosas. El número de línea por ejemplo no me parece útil tenerlo en la barra de Mode Line porque en los archivos de código ya lo tengo activado por cada línea. También cambié de lugar el Nyan Cat para que se vea aunque tenga el frame dividido en varias ventanas (en Emacs el frame es lo que cualquier usuario llama “ventana” y la ventanas son divisiones dentro del frame).

A la izquierda quedó el directorio y nombre del archivo siendo editado. También cuando el archivo tiene cambios sin guardar aparece un asterisco rojo sobre fondo blanco. En el medio información de control de versiones, el modo mayor que estoy usando, Nyan Cat, y después los modos menores activados sobre el buffer.

Así quedó visualmente:

Emacs Mode Line personalizado

Y pueden encontrar el código en GitHub.

Es otra cosa interesante en la que se puede experimentar y meter mano en Emacs. Un comando que usé mucho fue eval-buffer. Cuando estamos editando un buffer con código Elisp, podemos usar eval-buffer para que Emacs evalúe el código, y en caso de ser algo que afecte el comportamiento del editor de texto, los cambios se ven en el momento. Por eso mientras iba probando meter mano en el archivo modeline-custom.el, ejecutaba eval-buffer a cada rato para ver lo que cambiaba o rompía.

Espero que les haya servido el post, aunque sea para tomar en cuenta la posibilidad de meterle mano a sus Mode Lines. Recuerden que los comentarios están abiertos si precisan cualquier ayuda con Emacs, prometo responder dentro de mi reducido conocimiento del tema.

Feed de comentarios | Url para Trackbacks | Suscribirse a los posts por correo electrónico

8 comentarios en este post

  1. Avatar Osvaldo 8 agosto. 2015 - 1:14 am Debian IceWeasel 38.1.0 GNU/Linux 64 bits

    Muy buen dato 😀 Vengo de a poco personalizando mi configuración de emacs a medida que lo uso, así que sumaré esto a la lista de cambios pendientes.
    Gracias.

  2. Avatar Matías Croce 11 agosto. 2015 - 5:47 pm Firefox 41.0 GNU/Linux 64 bits

    Interesante la elección de colores. Te basaste en algún tema que se pueda encontrar por ahí?

    Desde hace un tiempo vengo usando powerline para el modeline, en conjunto con moe-theme versión dark: https://github.com/kuanyui/moe-theme.el
    Estoy más que conforme, solo me falta hacer que el modeline cambie de color en base al estado de fly-check. Debiera ser sencillo pero todavía soy muy malo con elisp

    • Avatar Fernando 11 agosto. 2015 - 6:49 pm Firefox 41.0 GNU/Linux 64 bits

      Los colores son una variación de lo que había en el código original con el verde que uso acá en el blog. Lo genial es que se pueden usar colores en formato hexadecimal como en HTML.

      Muy buena idea lo de cambiar el color en base a flycheck, que aparezca rojo cuando detecta un tipo de error o algo así. Si lo llegás a implementar me interesa usarlo 🙂

      ¡Saludos!

  3. Avatar Javier Viveros 13 septiembre. 2015 - 8:14 pm Firefox 39.0 Ubuntu

    Hola, estoy iniciando con emacs y necesito saber si existe la manera de recargar el navegador automaticamente al guardar el html. Se que existe koala pero como adaptarlo a emacs..

    Saludos!

    Dejar un comentario

    Toasty!