Tomar notas con howm en Emacs
Si pensabais que se habían acabado los paquetes de notas en Emacs, estabais bastante equivocados. Hoy os traigo otro de esos paquetes escondidos que encuentras rebuscando por Melpa. Esta vez, con otro enfoque totalmente distinto, en cierto modo minimalista, o con ánimo de minimalismo, pero bastante más visual. Un sistema completo a base de menús y buffers de listados que te permiten navegar por toda la información que guardes.
Ya he hablado muchas veces de la importancia que tiene para cualquier actividad humana el tomar notas. La propuesta de hoy viene desde Japón, gracias a Kazuyuki Hiraoka, que es profesor en la Universidad de Asia (Japón), en la Facultad de Administración de Empresas, Departamento de Ciencias de Datos. El proyecto lo comenzó en 2002, y lo mantiene al día, por lo que cuenta con más de veinte años de desarrollo.
El nombre de la herramienta (howm
) proviene de la frase japonesa
«Hitori Otegaru Wiki Modoki» que dado mi avanzado japonés, no tengo
idea de qué significa más allá de que va sobre algo de un wiki. Si
atendemos a una traducción libre del inglés haciendo una traducción
aún más libre al español, sería algo así como «una especie de wiki
personal útil».
El autor del chismático se puso a reflexionar sobre el asunto de tomar notas y llegó a algunas conclusiones que le hicieron tomar la resolución de ponerse a programar este paquete. Las reflexiones vienen a ser:
- Si no organizas las notas, leerlas es complicado.
- Si intentas organizarlas, escribirlas es complicado.
- La necesidad de equilibrio entre ambos es necesario.
- «Complicado» es una clave importante. Hay una gran diferencia entre «puedo hacerlo» y «puedo hacerlo fácilmente».
Después escribió:
El punto de compromiso puede variar de una persona a otra, pero priorizo la facilidad de escritura. He diseñado una herramienta de notas que crea un ambiente donde uno puede anotar sin sentir la presión de «organizarlas» y que mantiene la coherencia.
Hiraoka afirma que una estructura y categorización rígidas se
convierten rápidamente en un impedimento. Escribe fraccionadamente,
lee colectivamente es el lema de howm. Partiendo de esa filosofía,
cada nota estará escrita en un archivo de texto plano, da igual si
prefieres usar .txt
, .org
o .md
. Si el archivo está en el
directorio de trabajo de howm será accesible por él.
Lamentablemente, la herramienta está traducida sólo al francés y al inglés y no cuenta con traducción al español.
Instalación
El código utilizado para las pruebas con algunas modificaciones opcionales, que luego contaré, es el siguiente:
(use-package howm :ensure t :config (setq howm-home-directory "~/howm/") (setq howm-directory "~/howm/") (setq howm-keyword-file (expand-file-name ".howm-keys" howm-home-directory)) (setq howm-history-file (expand-file-name ".howm-history" howm-home-directory)) (setq howm-file-name-format "%Y/%m/%Y-%m-%d-%H%M%S.txt"))
Todo muy sencillo de entender: se pide el paquete howm
y se
establece un directorio de trabajo, en mi caso ~/howm/
. También un
archivo con las claves o etiquetas y otro archivo con el
histórico. Ambos archivos ocultos en el directorio de trabajo, para
que howm
los ignore en las búsquedas y los utilice sólo cando pides
las claves o el histórico. La última línea es el formato del nombre
del fichero cuando se crea una nota. Si te fijas, las quiero
organizadas por años y meses. Es decir, cuando creo una nota lo hará
en el directorio de su año %Y/
y de su mes %m/
, luego el nombre de
la nota será el habitual de howm
. Además le doy la extensión .txt
.
Las creo en .txt
por defecto, porque en org-mode
la tecla C-c ,
está habilitada para asignar la prioridad a un encabezado y choca, en
este caso, con howm
. Para compensar, estoy intentando adquirir el
hábito de tener una perspectiva de notas abierta, con el menú
principal de howm
abierto.
Siguiendo con la configuración, otra función que puede ser interesante es la de nombrar los buffers al abrirlos con el título del mismo, en lugar del nombre del archivo, que suele ser el numérico de la fecha, como acabamos de ver. Para ello, se puede añadir en la configuración:
(add-hook 'howm-mode-hook 'howm-mode-set-buffer-name) (add-hook 'after-save-hook 'howm-mode-set-buffer-name)
Por mi parte, de momento mantengo los nombres numéricos. Algunas veces, cuando hay varios apartados o encabezados en la nota, en lugar de poner el primer título, me pone el segundo o el tercero y eso me desconcierta más que la fecha de creación.
También se puede buscar información en otros directorios, no sólo el
de howm
que hemos visto arriba. Ahora mismo yo lo tengo configurado
para que busque también en el directorio donde tengo las notas de
denote
y en toda la base de datos de artículos de este blog.
(setq howm-search-path '("~/Notas" "~/blog/articulos")) (setq howm-search-other-dir t)
Las búsquedas tardan unos segundos por las miles de entradas que debe manejar, sin embargo, la capacidad de centralizar toda la información relevante de mi máquina hace que valga la pena esperar un momento.
Ejecución y manejo
Primero un listado de teclas y funciones, para después meternos con otras explicaciones sobre cómo usarlo.
tecla | función | significado |
---|---|---|
C-c , , |
howm-menu |
Llama al menú principal. |
C-c , c |
howm-create |
Crea una nota nueva. |
C-c , e |
howm-remember |
Crea una nota rápida. |
C-c , I |
howm-create-interactivly |
Selecciona nombre y lugar. |
C-c , D |
howm-dup |
Duplica una nota.1 |
C-c , a |
howm-list-all |
Lista todas las notas. |
C-c , l |
howm-list-recent |
Lista las notas recientes. |
C-c , . |
howm-find-today |
Lista las notas de hoy. |
C-c , : |
howm-find-yesterday |
Lista las notas de ayer. |
C-c , A |
howm-list-around |
Muestra la nota en contexto temporal. |
C-c , K |
howm-keyword-to-kill-ring |
Copia el título de una nota. |
C-c , s |
howm-list-grep-fixed |
Busca palabras clave. |
C-c , g |
howm-list-grep |
Busca mediante regexp. |
C-c , o |
howm-occur |
Busca dentro de una nota. |
C-c , h |
howm-history |
Muestra el historial de búsquedas. |
C-c , i |
howm-insert-keyword |
Inserta una clave en una nota. |
C-c , t |
howm-list-todo |
Lista las cosas por hacer. |
C-c , s |
howm-list-shedule |
Lista la agenda. |
C-c , T |
howm-insert-dtime |
Inserta la fecha y hora actuales. |
C-c , d |
howm-insert-date |
Inserta la fecha actual. |
C-c , C |
howm-create-here |
Crea un encabezado con la fecha en una nota. |
C-c , r |
howm-refresh |
Activa los enlaces de claves en el texto. |
C-c , R |
howm-menu-refresh |
Actualiza el menú principal. |
C-c , M |
howm-open-named-file |
Abre un fichero (sin el modo howm ) |
No están todas las funciones. Por ejemplo, me he saltado las de
navegación entre notas como howm-last-memo
o howm-next-memo
.
Veremos mejor cómo crear notas y cómo listarlas. El sistema es
bastante visual y si, al final, necesitas las teclas de movimiento,
terminas aprendiéndotelas. Otra función que me está gustando mucho y
que no tiene tecla asignada es howm-simulate-todo
, que permite
navegar la vista de tareas por hacer posicionándote en otros días
distintos a la fecha actual.

En la imagen se muestra el menú principal (C-c , ,
o M-x
howm-menu
) nada más instalar la herramienta. Al abrir este menú por
primera vez, howm
crea un archivo en el directorio de trabajo que se
llama 0000-00-00-000000.txt
. Éste contiene el menú principal, aunque
podemos configurar otro a nuestro gusto o modificar éste para
adaptarlo a nosotros. En el mismo archivo se encuentran instrucciones
de cómo hacerlo.
Si te despista tanta cosa por el buffer aquí va una pequeña descripción de lo que significa cada parte:
- La primera línea es el título de menú. Lo vemos marcado con la
sucesión
<<<
que indica que es una etiqueta. - Botonera: Inmediatamente debajo hay una serie de botones (el texto
marcado como
[xxx]
) con su tecla rápida justo al lado.2 - Agenda: Muestra una lista de las cosas que se encuentren marcadas como pendientes (To do) o como tareas de la agenda (Schedule).
- Recientes: Una lista de las notas recientes.
- Aleatorias: Una lista aleatoria de notas... puede que nos muestre alguna nota que tomamos sin haberla enlazado y que no hemos vuelto a abrir.3
- Leyenda o ayuda: El bloque inferior muestra instrucciones del formato de las fechas en las notas, para que se muestren en el bloque de agenda y una manera de cómo recordar más fácilmente dicho formato.
Si quieres utilizar este ingenioso método de agenda, te sugiero que pienses en las fechas como «peces» que nadan en las ominosas aguas del olvido. Algunas veces, se dejan ver en la superficie y otras se hunden. Según sea su prioridad, cuanto más alta la prioridad más arriba nadará nuestro pez... digo mostrará el recordatorio.
caracter | valor | significado |
---|---|---|
@ |
1 | Se muestra en la agenda.4 |
+ |
7 | Flota lentamente desde la fecha. |
! |
7 | Se muestra con prioridad alta desde días antes de la fecha. |
- |
1 | Aparece el día de la fecha y se hunde lentamente. |
~ |
30 | Aparece con periodicidad. |
. |
Hundido para siempre, es el punto final. |
Escribir notas
El sistema hace distinción entre «notas» y «recordatorios». Las notas
se espera que sean más extensas, tengan un título y un contenido. Se
pueden crear mediante la combinación de teclas C-c , c
o pulsando la
c
en el buffer del menú que vimos antes.

El cursor nos aparece en la primera línea que comienza con un signo
=
. Toda línea que comience con ese signo se considerará una cabecera
y es posible crear notas con varias de esas líneas para que se
muestren de manera independiente... pero estoy adelantando
acontecimientos.
La estructura de la nota se puede modificar en la configuración estableciendo otra plantilla, pero de momento, para las pruebas no he modificado nada. El día de la fecha actual aparece remarcado en color naranja y a continuación hay un enlace (remarcado en azul) a la nota desde la que se creó esta, en el ejemplo la hemos creado desde el menú y por tanto enlaza esta.
En el título he escrito un lacónico «Primera nota», puesto que es un ejemplo y he añadido una frase bajo. La nota ya debería aparecer en el apartado de recientes del menú5.
Lista de notas
Si desde el menú mismo o con la configuración de teclas globales de
howm
lanzamos howm-list-all
, nos aparecerá una ventana similar a
la siguiente:

Vemos que la ventana se ha dividido en dos buffers, el de arriba muestra una lista con las notas que hay en nuestro sistema con el nombre del archivo y el título al lado. El buffer interior muestra el contenido de la nota y nos permite editarla, o como en este caso, crear una nueva nota enlazando la abierta igual que hicimos antes.
Los enlaces pueden ir a títulos o a archivos completos. Para enlazar a
un título puedes colocarte en él y utilizar la combinación C-c , K
,
eso meterá el título en el anillo de borrado (kill-ring
), luego te
colocas donde quieras poner el enlace y teclear >>>[SPC]C-y
y ya lo
tienes enlazado.
Los bueno de esta visualización es que puedes navegar por las notas
del buffer superior con las teclas n
y p
. Al cambiar de nota se
visualiza en el buffer inferior el contenido de la nota donde te
encuentras y si ese contenido fuera muy grande, lo puedes leer sin
cambiar el cursor pulsando las teclas j
y k
para subir y bajar el
texto.
Si te preguntas qué significa <<<
, algo que seguro que te ha llamado
la atención, la respuesta es que marca una etiqueta o key. Es decir,
el conjunto >>>
marca enlaces y el conjunto <<<
marca etiquetas.
Una vez tienes una etiqueta, cada vez que aparezca en el texto lo
mostrará subrayado y pulsando RET
en cualquiera de esos términos,
abrirá el listado de notas filtradas por la etiqueta.

Si ahora visualizamos el menú, podemos observar que cada vez que
aparece la palabra Emacs
, ésta está subrayada con una línea
azul... lo que indica que es un enlace. Si sobre la palabra pulsamos
intro, nos aparecerá la lista de notas que contienen dicha etiqueta.
Si un fichero la contiene varias veces, aparecerá varias veces en el
listado.

Filtrar notas
No tenemos por qué pasar siempre por el menú. Podemos acceder
directamente a los distintos tipos de listado que proporciona howm
.
Particularmente, el que encuentro más cómodo es el de todas las
etiquetas. Si tenemos muchas notas puede ser un listado muy largo, sin
embargo, podemos filtrar las entradas simplemente pulsando f
en la
lista, nos aparecerá el menú de opciones de filtrado: por nombre, por
fecha, por contenido...
O más sencillamente, podemos pulsar la tecla g
(grep
) y tras
escribir una cadena nos mostrará las notas que contengan dicha cadena.
Notas rápidas
Las notas rápidas son anotaciones al vuelo. Las puedes lanzar desde el
menú, pulsando e
o desde cualquier sitio con la combinación C-c ,
e
. Eso abrirá un buffer en blanco. El sistema nos añadirá un título
y la fecha cuando se creó, simplemente es algo que quieres recordar
para volver a ello más tarde y poder desarrollarlo en una nota más
elaborada. O quizá no, simplemente quieres hacer la anotación para que
lo meta en la agenda.
Por ejemplo, he abierto un recordatorio, en el buffer vacío que ha aparecido he escrito lo siguiente:
Eclipse [2024-04-08]@ Observar un eclipse total de sol en México.
después, he pulsado C-c C-c
para guardarlo6. Si navegamos en la
lista de notas hasta ella veremos que a la primera línea le ha añadido
el signo =
y ha añadido la fecha y hora cuando fue creada.

Como vimos en el apartado donde hablé sobre el menú, hay un espacio abierto para las tareas. Al añadir el recordatorio, y ser la fecha cercana, la tarea, debería aparecer en dicho espacio.

También podemos visualizar las anotaciones de tareas o agenda
(schedule) pulsando y
en cualquier ventana de listado o menú de
howm
o utilizando la combinación C-c , y
desde cualquier otro
sitio. Nos mostrará todos los eventos que tengamos en la agenda
ordenados por prioridad. Más interesante que esa visualización, me
parece la que realiza llamando al comando M-x howm-simulate-todo
.

howm-simulate-todo
.
Esta vista, ofrece más información que el simple listado de la agenda,
pues también podemos ver el valor interno de prioridad asignada por
howm
a nuestros eventos, según la proximidad que tienen. Además se
puede navegar por los días pulsando <
y >
para retroceder y
avanzar los días y ver cómo se visualizará el listado de cosas por
hacer en dicha fecha. Para volver al día en curso, basta con pulsar
=
.
Conclusiones
Aún no he terminado de probarlo, he hecho una importación de notas
desde denote
a este sistema, en otro directorio y adaptando el
formato.

De momento, no me aclaro con la agenda... mi cerebro no procesa bien el sistema de prioridades que utiliza el chismático. Aún así, ofrece una vista completa y permite verlo todo en un simple buffer, acceder a la nota donde está el asunto anotado y hacer las modificaciones de manera rápida y sencilla.
Otra cosa que debo vigilar es mi tendencia a dejarme todos los
buffers abiertos. En howm
, sin casi darme cuenta, puedo tener
cientos de ellos abiertos por mi despiste. Supongo que cuando me
acostumbre a que se visualiza todo sin necesidad de pulsar RET
, el
número de buffers disminuirá significativamente. De momento, he
cogido la costumbre de abrir una perspectiva con el nombre de
notas y el menú de howm
preparado para las consultas, aunque aún
tengo muy automatizado el acceso a las notas de denote
. De momento,
mantengo las dos herramientas y ya decidiré en el futuro cuando tenga
más claro con cuál me es más fácil trabajar.
Pues ahí os lo dejo para que lo trasteéis.
Notas al pie de página:
Se puede utilizar para tener plantillas: duplicas una nota y luego la modificas.
Para realizar una acción, podemos seleccionar el botón pulsando
RET
sobre él, o tecleando directamente la letra resaltada junto a él.
Por darle alguna utilidad a esto, porque no alcanzo a pensar para qué querría yo que me muestre notas al azar. De hecho, en el mismo bloque advierte que si no lo quieres que edites el menú y lo quites.
Es decir, si anotamos la fecha tal que [2024-04-13]@3
, la
anotación aparecerá en el apartado de la agenda del día de la fecha al
16 del mismo mes... y luego se hundirá en el mar del olvido...
Si no es así utiliza el comando de refrescar el menú.
Para salir sin guardarlo, la combinación es C-c C-k
.
Comentarios