ORG-MODE - Déclencher le statut TODO à une certaine date?

9

Plutôt que de vérifier manuellement un fichier tickler ou un calendrier chaque matin, comment puis-je créer un déclencheur qui définira le statut d'un élément sur TODO à une certaine date?

earlio
la source

Réponses:

5

Pas une réponse directe, mais vous pouvez utiliser le support d'Org pour les délais et la planification à la place.

Vous pouvez créer vos articles TODO et leur donner une date planifiée, ce qui dans Org signifie la date à laquelle vous prévoyez d'effectuer la tâche - et quand elle devrait commencer à apparaître dans votre agenda. (Si vous n'utilisez pas déjà les vues de l'agenda de l'organisation, elles méritent une enquête!)

Selon vos besoins, vous pouvez également attribuer un délai. Par exemple: créez un TODO le vendredi, planifiez-le pour le mercredi suivant lorsque vous voulez le voir; et lui donner une date limite pour le vendredi suivant, à laquelle il doit être complété.

glucas
la source
7

Voici quelque chose que j'utilise chaque matin pour passer au peigne fin toutes mes tâches et changer la date à aujourd'hui si elle est en retard, et la changer de prochaine action en active si elle est due aujourd'hui. C'est une solution personnalisée pour mon propre calendrier que j'utilise depuis un an, donc il faudra sans aucun doute une personnalisation de votre part. Si je me souviens bien, il y a eu un changement par org-deadlinerapport aux org-modeversions 7 et 8, et j'utilise peut-être une version précédente dans ma configuration. La version actuelle peut nécessiter un argument supplémentaire ou quelque chose - si vous avez besoin d'aide supplémentaire, faites le moi savoir et je travaillerai dessus au cours des prochains jours si le temps le permet.

Le regex que j'utilise contemple les en-têtes ont deux étoiles et seront à la gauche de la mémoire tampon. Votre propre configuration nécessitera probablement une modification de l'expression régulière.

(defun org-carry-forward-uncompleted-tasks ()
"Carry forward uncompleted tasks."
(interactive)
  (save-excursion
    (goto-char (point-max))
    (while (re-search-backward "^\\*\\* Active" nil t)
      (unless (org-at-heading-p)
        (org-back-to-heading t))
      (let* (
          (element (org-element-at-point))
          (todo-state (org-element-property :todo-keyword element))
          (deadline (org-element-property :deadline element))
          (deadline-time-stamp
            (when deadline
              (time-to-days
                (org-time-string-to-time
                  (org-element-property :raw-value deadline)))))
          (today (time-to-days (current-time))) )
        (when
            (and
              deadline-time-stamp
              (> today deadline-time-stamp) ;; deadline is overdue
              (string= todo-state "Active") ) ;; todo-state equals "X"
          (org-deadline nil ".") )))))

(defun org-make-active-today ()
"Change task from Next Action to Active if deadline is less than or equal to today."
(interactive)
  (save-excursion
    (goto-char (point-max))
    (while (re-search-backward "^\\*\\* Next Action" nil t)
      (unless (org-at-heading-p)
        (org-back-to-heading t))
      (let* (
          (element (org-element-at-point))
          (todo-state (org-element-property :todo-keyword element))
          (deadline (org-element-property :deadline element))
          (deadline-time-stamp
            (when deadline
              (time-to-days
                (org-time-string-to-time
                  (org-element-property :raw-value deadline) ))))
          (today (time-to-days (current-time))) )
        (when
            (and
              deadline-time-stamp
              (>= today deadline-time-stamp) ;; deadline less than or equal to today
              (string= todo-state "Next Action")) ;; todo-state equals "X"
          (org-deadline nil ".")
          (org-todo "Active") )))))
liste des lois
la source