Aprendiendo GNU Emacs y org-mode (VII)

“Tareas” en org-mode

Todo sistema de productividad tiene una función, que no es otra que ayudarnos a “hacer” aquellas cosas que tenemos, queremos y podemos hacer, a las que generalmente llamamos “Tareas”.

Ya hemos visto que esta denominación es excesivamente genérica para un sistema GTD y creo todos hemos experimentado que a veces una lista de “Tareas” acaba convirtiéndose en un enorme batiburrillo de “cosas” que nos recuerdan algo, aunque no sepamos muy bien qué.

Aunque  explicaré más adelante como organiza GTD estas listas para hacerla eficientes y los conceptos de “Proyecto” y “Acción” que estarían englobados dentro de esta denominación genérica, vamos en primer lugar a ver como org-mode nos permite confeccionar estas listas.

Introducción

Lo primero que hay que entender es que org-mode no gestiona las listas de tareas como documentos independientes, sino que las tareas forman parte de un fichero de notas.

Obviamente podríamos crear un fichero exclusivo de lista de tareas, pero esto nos haría perder la ventaja básica de este sistema que nos permite mantener las acciones en su contexto con lo que facilita enormemente los procesos de revisión imprescindibles en GTD.

La forma que utiliza org-mode para definir una “Tarea” es simplemente añadir una marca específica una entrada de cualquier nivel, cómo hace con etiquetas y fechas.

Funcionamiento básico

Cualquier entrada de un esquema de org-mode se considera una “Tarea” cuando comienza con la palabra “TODO” es decir en este texto:

* Mi Blog

** TODO Escribir entrada sobre "Tareas"

“Escribir entrada sobre “Tareas” sería recogido en nuestra agenda como una “Tarea” por hacer.

Lógicamente esto es GNU Emacs y no podría faltar la combinación de teclas que nos convierta una entrada en tarea, y esta no es otra que:

C-c C-t

Esta combinación funciona de forma cíclica sobre cualquier entrada haciéndola pasar por los siguientes estados:

-> (sin marca) -> TODO -> DONE  -
|                                |
<---------------<---------------<

Cómo veis más sencillo imposible, aún sí tenemos otras dos posibilidades de movernos en ese mismo ciclo que son:

S-(flecha derecha)
S-(flecha izquierda) que lo recorre de forma inversa

Ampliar nuestro Workflow

Obviamente esto nos permite gestionar una lista de “Tareas” muy sencilla, ¿pero que ocurre si necesitamos que nuestras tareas contenga algunos estados intermedios?.

Lo primero que hay que decir es que org-mode nos permite definir un flujo personalizado para tareas delegadas que sería:

-> (sin marca) -> DELEGAR -> REVISAR -> HECHO ->
|                                              |
<---------------<---------------<-------------<

Podemos definir este flujo mediante la siguiente linea en nuestro fichero de org-mode:

#+TODO: DELEGAR REVISAR | HECHO

La clave “#+TODO:” es equivalente a “#+SEQ_TODO:”.

El signo “|” sirve para que la agenda  distinga los estados “pendientes de hacer” de los “finalizados” ya que podríamos por ejemplo usar secuencias cómo esta:

#+TODO: DELEGAR REVISAR | HECHO CANCELADO

Podemos ir un paso más allá estableciendo flujos paralelos de esta forma:

#+TODO: HACER | HECHO
#+TODO: DELEGAR REVISAR | FINALIZADO
#+TODO: | CANCELADO

Estas definiciones que hemos realizado en nuestro fichero podemos personalizarlas de forma general para todos nuestros ficheros, como siempre con un poco de ELisp en nuetro fichero .emacs.

Importante tener en cuenta que cada vez que modifiquemos estas sentencias deberemos pulsar

C-c C-c

Con ello se refrescarán los estados en nuestro fichero

Por ejemplo el caso anterior se incluiría con una sentencia de esta forma:

(setq org-todo-keywords
      '((sequence "HACER" "|" "HECHO")
        (sequence "DELEGAR" "REVISAR" "|" "FINALIZADO")
        (sequence "|" "CANCELADO")))

Obviamente moverse en esta estructura con las teclas antes definidas es algo más complejo pero podemos utilizar la combinación:

C-u C-c C-t

Esta combinación nos pedirá en la línea del minibuffer el estado que queremos asignar y bastará con teclearlo.

Asignando teclas a los estados

Aún así para facilitar más las cosas org-mode nos permite asignar teclas a cada estado de esta forma:

#+TODO: HACER(h) | HECHO(t)
#+TODO: DELEGAR(d) REVISAR(r) | FINALIZADO(f)
#+TODO: | CANCELADO(c)

o en el fichero .emacs

(setq org-todo-keywords
      '((sequence "HACER(h)" "|" "HECHO(t)")
        (sequence "DELEGAR(d)" "REVISAR(r)" "|" "FINALIZADO(f)")
        (sequence "|" "CANCELADO(c)")))

Con ello conseguimos que la combinación

C-c C-t

nos presente en el minibuffer las opciones posibles con una sóla pulsación de la tecla asignada, como vemos en esta pantalla:

Tareas recurrentes

Un caso especial de “Tareas” son aquellas que se repiten en el tiempo y por supuesto org-mode provee una forma de gestionarlas.

La forma es tan sencilla cómo asignar a la entrada una “Etiqueta temporal” del estilo de las definidas en la entrada anterior pero con un formato especial.

Las repeticiones no son más que “Etquetas Temporales” del tipo activo con un indicador que indica su periodicidad, y pueden ser diarias(d), semanales(w), mensuales(m) o anuales(y), y se indican con el siguiente formato:

<2007-05-16 Wed 12:30 +nx>

Donde n indica el intervalo entre entre repeticiones y x el tipo de repetición por ejemplo:

<2007-05-16 Wed 12:30 +1w>

Dejo cómo consulta a los entendidos, para incluirlo más adelante, porque yo aún no lo pillo, si hay forma directa de insertar este tipo de etiquetas, yo lo hago insertando una activa y modificando, y cómo se gestionan los estados de workflow en las diferentes repeticiones.

Tareas dependientes

En algunos casos puede ser útil establecer una dependencia en las “Tareas” de otras menores lo que gracias a la estructura de niveles de org-mode resulta sencillo.

Vemos un ejemplo, aunque sea muy simple:

* TODO Preparar viaje de vacaciones 
** DONE Seleccionar destino
*** TODO Comprobar presupuesto
***** TODO Ver opción A
***** TODO Ver opción B
** TODO Elegir transporte
** TODO Preparar equipaje
**** TODO Elegir maleta

En casos como este lo normal es que un nivel superior no pueda marcarse cómo realizado hasta haberlo hecho con los inferiores.

Esta opción puede forzarse mediante la inclusión de la propiedad ORDERED de la siguiente forma:

* TODO Preparar viaje de vacaciones
       :PROPERTIES:
       :ORDERED: t
       :END:
 ** DONE Seleccionar destino
*** TODO Comprobar presupuesto
***** TODO Ver opción A
***** TODO Ver opción B
** TODO Elegir transporte
** TODO Preparar equipaje
**** TODO Elegir maleta

De forma inversa podemos desactivar la propiedad con esta propiedad:

       :PROPERTIES:
       :NOBLOCKING: t
       :END:

Esto nos permite incluir en cada nivel superior las etiquetas marcas del tipo [/] o [%] para ver el avance de la tarea como en este caso:

* TODO Preparar viaje de vaciones [1/3] 
       :PROPERTIES:
       :ORDERED: t
       :END:
** DONE Seleccionar destino
*** TODO Comprobar presupuesto [50%]
***** DONE Ver opción A
***** TODO Ver opción B
** TODO Elegir transporte
** TODO Preparar equipaje
**** TODO Elegir maleta

Para actualizar el avance basta situarse sobre la marca y pulsar:

C-c C-c

Cuando veamos la agenda veremos algún aspecto más de estas características.

CheckBox

La última forma de gestión de tareas para casos más imples es una simple lista de checkbox de la forma:

* TODO Organizar una fiesta [1/3]
- [ ] comprar la comida
- [-] Avsar a los invitados [2/3]
  - [ ] Pedro
  - [X] Juan
  - [X] Luis
- [X] Elegir la música

Las teclas básicas para gestionarlos son:

M-S-ENTER -> añade un elemento de lista con CeckboxC-c C-C   -> cambia el estado de un ChekBox

Por último recomiendo revisar el Capitulo 5 del manual de org-mode  y el mismo en la Guía de org-mode en los que podréis encontrar detalles más profundos de lo aquí descrito, ya que me he limitado a incluir los elementos básicos necesarios para construir un sencillo sistema GTD.

Hasta pronto y no olvidéis comentar y aportar para mejorar estas entradillas de novato ;-).

 

 

 

 

Deja un comentario