TODO状態をWAITINGに変更するときに「SCHEDULED」タイムスタンプを削除する方法


7

TODOとマークされた組織バッファーにアイテムがあり、タイムスタンプがスケジュールされています。

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

このアイテムを「待機」状態にしたときに、スケジュールされたタイムスタンプを削除するにはどうすればよいですか?


なぜそれを削除して欲しいのですか?それは議題に現れない目的のためですか?
Malabarba 2014年

デフォルトではWAITINGアイテムをスケジュールしないので、削除してほしい。ただし、スケジュールを設定することもあるので(たとえば、X日間の待機後にチェックインするなど)、スケジュールされた場合でもアジェンダに表示されます。
mankoff 2014年

はい、それは議題に表示されないようにするためです-一般的にそれは私が取り組んだいくつかのタスクであり、現在メールへの応答を待っています。そのため、「WAITING」に移行すると、今作業できず、スケジュールされたタイムスタンプを残しておく必要があります(もちろん、後でスケジュールされたタイムスタンプを追加した場合は、もう一度表示したい)。
Nathaniel Flath 2014年

回答:


3

多分このようなもの(バッファとアジェンダから簡単にテストされています)

(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)

1

あなたはこのようにすることをやっている場合WAITINGの項目は、アジェンダバッファには表示されません、私は選択肢を提案したいと思います。

-typeキーワードWAITINGになるように定義できますDONE。これらは、スケジュールがある場合でも、議題に表示されないように簡単に構成できます。あなたはこれでグローバルにそれを行うことができます:

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

または、このヘッダーを使用してファイルごとに:

#+SEQ_TODO: TODO | WAITING DONE

次に、これらのアイテムを議題に表示しないようにするには、次のように設定してください。

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

最後に、時々WAITINGアイテムを議題に表示する必要がある場合DEADLINEは、ではなくに設定しSCHEDULEます。期限の表示は別の変数(org-agenda-skip-deadline-if-done)によって制御されるため、アジェンダには表示されます。


1
完了ログを使用すると、待機用の完了ログが作成されますが、これは少し混乱するかもしれません。
14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.