Notxor tiene un blog

Defenestrando la vida

Listas de tareas

2019-12-28

Una de las primeras cosas que me sorprendieron cuando conocí org-mode fue la facilidad de hacer listas de tareas, además de lo completas que son. Pero para ver su potencia desde cero, vamos a ir por partes.

Creando una lista

Como el movimiento se aprende andando vamos a generar una lista de tareas. Imagina que queremos organizar una pequeña fiesta con nuestros amigos. Sigue los siguientes pasos:

  1. Visita un nuevo fichero que se llame fiesta.org
  2. Escribe el siguiente texto, puedes copiar y pegar, pero estaría mejor si lo escribes tú mismo, le haces variaciones y juegas un poco con él:

    - Organizar fiesta [%]
      - [ ] Llamar a los amigos [/]
        - [ ] Fulanito
        - [ ] Menganita
        - [ ] Zutanito
      - [ ] Encargar cattering
      - [ ] Preparar música [/]
        - [ ] Hacer lista en =Mixxx=
        - [ ] Conseguir música que falte
      - [ ] Avisar a los vecinos
    

    Supongo que te llamará la atención las expresiones [%] o [/], pero vas a comprender enseguida para qué sirven.

  3. Ve a la línea de Menganita y pulsa C-c C-c. El texto debe haber cambiado automágicamente a:

    - Organizar fiesta [0%]
      - [-] Llamar a los amigos [1/3]
        - [ ] Fulanito
        - [X] Menganita
        - [ ] Zutanito
      - [ ] Encargar cattering
      - [ ] Preparar música [0/2]
        - [ ] Hacer lista en =Mixxx=
        - [ ] Conseguir música que falte
      - [ ] Avisar a los vecinos
    

    Interesante ¿no? Resulta que podemos poner casillas marcadas como [ ], cuando completamos esa tarea la marcamos con C-c C-c y org hace los cálculos necesarios para indicarte cómo se va desarrollando. Cuando una tarea está hecha en parte lo marca como [-] y cuando está completada como [X]. La casilla que habías escrito como [%] se ha convertido en el porcentaje completado.

  4. De momento sólo hemos completado una parte de una tarea. Ve a la línea Avisar a los vecinos y pulsa C-c C-c.

    - Organizar fiesta [25%]
      - [-] Llamar a los amigos [1/3]
        - [ ] Fulanito
        - [X] Menganita
        - [ ] Zutanito
      - [ ] Encargar cattering
      - [ ] Preparar música [0/2]
        - [ ] Hacer lista en =Mixxx=
        - [ ] Conseguir música que falte
      - [X] Avisar a los vecinos
    

    Ya hemos completado el 25% de las tareas básicas y la lista nos avisa.

Podría seguir dando instrucciones de cómo funciona una lista simple de tareas, pero mi sugerencia es que juegues con esta lista, añadas items, completes opciones y veas que con una interfaz muy sencilla, un árbol de listas, se puede tener de un vistazo el control de un proyecto.

Tareas: estados, prioridades y etiquetas

En org-mode cualquier cabecera se convierte en un ítem. Vamos a cambiar el texto de la anterior sección y utilizar cabeceras en lugar de listas. El texto debería quedar como sigue:

* Organizar fiesta
** Llamar a los amigos
*** Fulanito
*** Menganita
*** Zutanito
** Encargar cattering
** Preparar música
*** Hacer lista en Mixxx
*** Conseguir música que falte
** Hablar con los vecinos

Ve a la línea *** Zutanito y pulsa C-c C-t tres veces seguidas ¿Qué ocurre? Efectivamente, el título se marca la primera vez como TODO, la segunda como DONE y la tercera vuelve a estar sin marcar. Lo mismo lo podemos hacer también con las combinaciones S-<LEFT>, en el mismo sentido, y S-<RIGHT>, en el sentido inverso. ¿Y tiene que ponerlo en inglés? Pues no, se puede generar cualquier tipo de estados. Se pueden configurar de forma general, pero también establecer algunas particulares para un fichero. Por ejemplo, escribe lo siguiente en la primera línea:

#+TODO: Pendiente Esperando | Finalizado Cancelado

Recuerda no dejar ningún espacio en blanco delante del carácter #, si lo haces, org lo tomará como un comentario. Para que tenga efecto tendrás que recargar el fichero: guárdalo y vuelve a abrirlo. Ahora podrás hacer el ciclo con los estados que has escrito. Puedes observar que hay un carácter | para separar los estados pendientes, ─a la izquierda─, de los estados completados, ─a la derecha─. Si quieres profundizar más en la configuración de estados de las tareas ve a la documentación de org-mode para aprender más detalles.

Prioridad

En nuestra lista de tareas, también podemos establecer de forma visual las prioridades. Nos deja establecer tres prioridades A, B, C de más alta a más baja. Un ejemplo: Ve a la línea Encargar cattering y pulsa la combinación C-c , a. La línea debe mostrar una prioridad marcada como [#A].

También puedes utilizar las combinaciones S-<UP>, para incrementar prioridad, y S-<DOWN>, para reducir la prioridad.

Etiquetas

Las etiquetas son una herramienta poderosa para acotar las tareas. En mi fichero de tareas utilizo tres etiquetas: trabajo, personal y asociación para indicar que una tarea que tengo pendiente es para el trabajo, para mí o para la asociación con la que colaboro. Pero, por ejemplo, en un fichero de un proyecto de trabajo en equipo, puedes utilizar etiquetas para saber a quién se le ha asignado cada tarea.

Si no tenemos configuradas las etiquetas que utilice el fichero, podemos utilizar cualquiera. Al pulsar C-c C-c en cualquier cabecera nos preguntará por la etiqueta y podemos escribir lo que queramos. Sin embargo, podemos establecer una limitación para que las etiquetas sean sólo las que necesitamos. Por ejemplo, si escribimos en nuestro fichero, justo después de la línea #+TODO: la siguiente línea:

#+TAGS: trabajo(t) personal(p) asociación(a)

Esa línea limitará las etiquetas a tres: trabajo, personal y asociación, además vemos que hemos asignado una tecla entre paréntesis para cada una de ellas. De esa forma, al pulsar C-c C-c nos aparecerá un diálogo donde podemos señalar qué etiquetas queremos utilizar. Por ejemplo:

  1. Escribe la línea anterior en nuestro fichero de pruebas.
  2. Guarda el fichero y recárgalo para tengan efecto los cambios en las etiquetas.
  3. Ve a cualquier línea de cabecera y pulsa C-c C-c a.
  4. Observa que a la derecha habrá aparecido la etiqueta :asociación:.
  5. Ve a otra línea y pulsa C-c C-c t p.
  6. Observa que la etiqueta que aparece en este caso es :trabajo:personal:. Efectivamente, un ítem puede tener varias etiquetas.

¿Qué ocurre si tengo etiquetas que son excluyentes? Por ejemplo, imagina que has limitado las etiquetas de un trabajo en equipo con los nombres del equipo, es muy probable que quieras limitar la asignación de forma excluyente:

  1. Cambia la definición de las etiquetas en nuestro fichero de pruebas a:

    #+TAGS: { Antonio(a) Belén(b) Carlos(c) Diana(d) } tests(t) programa(p) mantenimiento(m)
    
  2. Guarda los cambios y recarga el fichero para que tengan efecto.
  3. Fíjate que los nombres del equipo están situados entre {...}.
  4. Ve a cualquier línea y pulsa C-c C-c c t <RET>.
  5. Observa que aparece el par de etiquetas :Carlos:tests:.
  6. En esa línea vuelve a pulsar C-c C-c b <RET>.
  7. Observa que la etiqueta a cambiado a :Belén:tests:.
  8. En la misma línea pulsa C-c C-c m <RET>.
  9. Observa que la etiqueta cambia a :Belén:tests:mantenimiento:.

Como puedes observar, las etiquetas situadas entre llaves son excluyentes entre sí, no pueden coexistir en la misma línea, mientras las que se encuentran fuera, pueden etiquetar a la vez una cabecera.

Conclusiones

Las listas de tareas son una sencilla y eficaz manera de organizarnos. Org nos proporciona esta herramienta de una manera sencilla de entender y utilizar. Tanto para hacer seguimientos como para etiquetar y acotar las acciones. Seguro que con un poco de práctica encontrarás cómo aplicarlas y verás lo sencillo que es gestionar algunos proyectos con ellas.

Categoría: emacs org-mode

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 Mastodon y en Diaspora con el nick de Notxor.

También se ha abierto un grupo en Telegram, para usuarios de esa red.

Disculpen las molestias.