ORG-MODE - Attiva lo stato TODO in una determinata data?


9

Invece di controllare manualmente un file tickler o un calendario ogni mattina, come posso creare un trigger che imposti lo stato di un elemento su TODO in una determinata data?

Risposte:


5

Non è una risposta diretta ma è possibile utilizzare il supporto di Org per le scadenze e la pianificazione.

Puoi creare i tuoi articoli TODO e assegnare loro una data programmata, che in Org indica la data in cui intendi svolgere l'attività - e quando dovrebbe iniziare a comparire nella tua agenda. (Se non stai già utilizzando le visualizzazioni dell'agenda dell'organizzazione valgono qualche indagine!)

A seconda delle tue esigenze puoi anche assegnare una scadenza. Ad esempio: crea un TODO il venerdì, pianificalo per il mercoledì seguente quando lo vuoi vedere; e dargli una scadenza per il venerdì successivo entro il quale dovrà essere completato.


7

Ecco qualcosa che uso ogni mattina per esaminare tutte le mie azioni e cambiare la data oggi se è scaduta, e cambiarla dall'azione successiva ad attiva se è prevista oggi. È una soluzione personalizzata per il mio calendario che uso da un anno, quindi avrà sicuramente bisogno di personalizzazioni da parte tua. Il mio ricordo è che c'è stato un cambiamento org-deadlinedalla org-modeversione 7 e 8 e potrei usare una versione precedente nella mia configurazione. La versione corrente potrebbe aver bisogno di un argomento aggiuntivo o qualcosa del genere - se hai bisogno di ulteriore aiuto, fammelo sapere e ci lavorerò nei prossimi giorni, quando il tempo lo permetterà.

La regex che uso contempla le intestazioni ha due stelle e si troverà alla sinistra del buffer. La tua configurazione richiederà probabilmente una modifica del regex.

(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") )))))
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.