ORG-MODE - TODO-Status an einem bestimmten Datum auslösen?

9

Wie kann ich einen Auslöser erstellen, der den Status eines Elements an einem bestimmten Datum auf TODO setzt, anstatt jeden Morgen manuell eine Tickler-Datei oder einen Kalender zu überprüfen?

Earlio
quelle

Antworten:

5

Keine direkte Antwort, aber Sie könnten stattdessen die Unterstützung von Org für Termine und Terminplanung nutzen.

Sie können Ihre TODO-Elemente erstellen und ihnen ein geplantes Datum zuweisen. Dies bedeutet in Org das Datum, an dem Sie die Aufgabe ausführen möchten - und wann sie in Ihrer Agenda angezeigt werden soll. (Wenn Sie noch keine Organisations-Agenda-Ansichten verwenden, sind diese eine Untersuchung wert!)

Abhängig von Ihren Anforderungen können Sie auch eine Frist festlegen. Beispiel: Erstellen Sie am Freitag ein TODO und planen Sie es für den folgenden Mittwoch, wenn Sie es tatsächlich sehen möchten. und geben Sie ihm eine Frist für den folgenden Freitag, bis zu der er abgeschlossen sein muss.

Glucas
quelle
7

Hier ist etwas, das ich jeden Morgen verwende, um alle meine Aufgaben zu durchkämmen und das Datum auf heute zu ändern, wenn es überfällig ist, und es von der nächsten Aktion in aktiv zu ändern, wenn es heute fällig ist. Es handelt sich um eine benutzerdefinierte Lösung für meinen eigenen Kalender, die ich seit einem Jahr verwende. Daher müssen Sie zweifellos einige Anpassungen vornehmen. Ich erinnere mich, dass es eine Änderung org-deadlinegegenüber org-modeVersion 7 und 8 gab und ich möglicherweise eine frühere Version in meinem Setup verwende. Die aktuelle Version benötigt möglicherweise ein zusätzliches Argument oder etwas anderes. Wenn Sie zusätzliche Hilfe benötigen, lassen Sie es mich wissen und ich werde in den nächsten Tagen daran arbeiten, wenn es die Zeit erlaubt.

Der Regex, den ich verwende, sieht vor, dass die Überschriften zwei Sterne haben und sich links vom Puffer befinden. Ihr eigenes Setup erfordert wahrscheinlich eine Änderung des regulären Ausdrucks.

(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") )))))
Gesetzesliste
quelle