Pregunta:
Tengo algunas tareas en mi agenda que me gustaría completar todos los días, por ejemplo, SCHEDULED: <2016-04-04 Mon 16:30 +1d>
.
Obviamente me gusta verlos en la agenda diaria, y eso funciona bien. Esto es lo que estoy usando:
(setq org-agenda-custom-commands
`(
;; ...
("d" "Daily Action List"
((agenda ""
((org-agenda-ndays 1)
(org-agenda-sorting-strategy
(quote ((agenda time-up priority-down tag-up))))
(org-deadline-warning-days 0)))))))
(defun orfu-agenda-day ()
(interactive)
(org-agenda nil "d"))
Sin embargo, cuando cambio a la vista semanal (con w ), las tareas diarias oscurecen todo, ya que ahora cada una de ellas se repite 7 veces.
¿Cómo puedo ocultar todas las tareas que tienen +1d
en la vista semanal? Si ayuda, podría etiquetar los encabezados con los que están, por ejemplo :daily:
y luego el problema se simplificaría para ocultar una sola etiqueta de la agenda semanal.
Respuesta:
Convenientemente, org-mode
tiene una función para obtener solo la repetición de la marca de tiempo de una entrada: org-get-repeat
. Solo tenemos que poner eso en una función apropiada para org-agenda-skip-function
, es decir, debería probar si (org-get-repeat)
es igual a "+ 1d" para cada título. SI es así, devuelva el siguiente título; de lo contrario, devuelva nil
para no omitir.
(defun skip-daily-tasks ()
(let ((next-headline (save-excursion (or (outline-next-heading) (point-max))))
(headline (or (and (org-at-heading-p) (point))
(save-excursion (org-back-to-heading)))))
(if (string= (org-get-repeat) "+1d")
next-headline
nil)))
(add-to-list 'org-agenda-custom-commands
'("w" "Weekly"
agenda ""
((org-agenda-span 'week)
(org-agenda-skip-function 'skip-daily-tasks))
))