Notxor tiene un blog

Defenestrando la vida

Tomar notas con howm en Emacs

Notxor
2024-04-02

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:

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.

Tabla 1 Tabla incompleta de funciones de howm.
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.

Captura_primera-entrada.png
Figura 1: El menú principal, nada más arrancar.

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.

Captura_crear-nota.png
Figura 2: Ventana con la nueva nota creada.

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:

Captura_lista-notas.png
Figura 3: Ventana de la lista de notas

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.

Captura_creando-etiqueta.png
Figura 4: Creando varias notas e introducciendo una etiqueta Emacs.

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.

Captura_lista-por-etiqueta.png
Figura 5: Listado de la etiqueta Emacs.

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.

Captura_captura-recordatorio.png
Figura 6: Vista de la nota de recordatorio recién 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.

Captura_menu-con-recordatorio.png
Figura 7: Menú con la nueva tarea «flotando» en el mar del olvido.

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.

Captura_navegar-dias.png
Figura 8: Vista de 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.

Captura_importacion-notas.png
Figura 9: El listado con más notas que visualizar.

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:

1

Se puede utilizar para tener plantillas: duplicas una nota y luego la modificas.

2

Para realizar una acción, podemos seleccionar el botón pulsando RET sobre él, o tecleando directamente la letra resaltada junto a él.

3

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.

4

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...

5

Si no es así utiliza el comando de refrescar el menú.

6

Para salir sin guardarlo, la combinación es C-c C-k.

Categoría: emacs notas howm

Comentarios

Debido a algunos ataques mailintencionados a través de la herramienta de comentarios, he decidido no proporcionar dicha opción en el Blog. Si alguien quiere comentar algo, me puede encontrar en esta cuenta de Mastodon, también en esta otra cuenta de Mastodon y en Diaspora con el nick de Notxor.

Si usas habitualmente XMPP (si no, te recomiendo que lo hagas), puedes encontrar también un pequeño grupo en el siguiente enlace: notxor-tiene-un-blog@salas.suchat.org

Disculpen las molestias.

Escrito enteramente por mi Estulticia Natural sin intervención de ninguna IA.