So entfernen Sie den Zeitstempel 'GEPLANT', wenn Sie den TODO-Status in WARTEN ändern

7

Ich habe ein Element in einem Organisationspuffer, das als TODO markiert ist und einen geplanten Zeitstempel hat:

* TODO do something
  SCHEDULED: <2014-11-02 Sun>

Wie kann ich bewirken, dass der ZEITPLAN-Zeitstempel entfernt wird, wenn ich dieses Element in den Wartezustand versetze?

Nathaniel Flath
quelle
Warum soll es entfernt werden? Ist es zum Zweck, nicht auf der Tagesordnung zu erscheinen?
Malabarba
Ich möchte, dass es entfernt wird, da ich standardmäßig keine WAITING-Elemente plane. Aber ich möchte, dass es immer noch auf der Tagesordnung steht, wenn es geplant ist, weil ich sie manchmal plane (z. B. um nach X Tagen WARTEN einzuchecken).
Mankoff
Ja, es dient dazu, nicht auf der Tagesordnung zu stehen. Im Allgemeinen ist es eine Aufgabe, an der ich gearbeitet habe, und ich warte jetzt auf eine Antwort auf eine E-Mail. Wenn Sie es also auf "WARTEN" umstellen, kann ich jetzt nicht daran arbeiten und möchte, dass der geplante Zeitstempel verlassen wird (wenn ich später einen geplanten Zeitstempel hinzufüge, möchte ich, dass er erneut angezeigt wird ).
Nathaniel Flath

Antworten:

3

Vielleicht so etwas (kurz aus Puffer und Agenda getestet)

(defun rasmus/remove-schedule ()
  "Remove SCHEDULED-cookie is switching state to WAITING."
  (save-excursion
(and (equal (org-get-todo-state) "WAITING")
     (org-get-scheduled-time (point))
     (when (search-forward-regexp org-scheduled-time-regexp nil t)
       (or (delete-region (match-beginning 0) (match-end 0)) t))
     (get-buffer "*Org Agenda*")
     (with-current-buffer "*Org Agenda*"
       (org-agenda-redo)))))

(add-hook 'org-after-todo-state-change-hook
     'rasmus/remove-schedule)
Rasmus
quelle
1

Wenn Sie dies tun, damit WAITINGElemente nicht im Agenda-Puffer angezeigt werden, möchte ich eine Alternative vorschlagen.

Sie können WAITINGein DONESchlüsselwort vom Typ "Typ" definieren . Diese können einfach so konfiguriert werden, dass sie nicht in der Agenda angezeigt werden, selbst wenn sie einen Zeitplan haben. Sie können dies global tun:

(setq org-todo-keywords '((sequence "TODO" "|" "WAITING" "DONE")))

Oder pro Datei mit diesem Header:

#+SEQ_TODO: TODO | WAITING DONE

Damit diese Elemente nicht in der Tagesordnung angezeigt werden, stellen Sie einfach Folgendes ein:

(setq org-agenda-skip-scheduled-if-done t)

Wenn Sie gelegentlich einen WAITINGPunkt in der Tagesordnung anzeigen möchten, setzen Sie einen DEADLINEanstelle von a SCHEDULE. Die Anzeige von Fristen wird durch eine andere Variable ( org-agenda-skip-deadline-if-done) gesteuert , sodass sie weiterhin in der Tagesordnung angezeigt werden.

Malabarba
quelle
1
Wenn Sie die Fertigprotokollierung verwenden, wird ein Fertigprotokoll zum Warten erstellt, was etwas verwirrend sein kann.
Ceving