読者です 読者をやめる 読者になる 読者になる

レガシーコード生産ガイド

私に教えられることなら

org-modeで今日手をつけるプロジェクトのサブタスクの先頭のみアジェンダに表示する

TODOステータスがPROJだとサブタスクあり、NEXTだとそれ以上細分化できないものとして使っている。

で、タイトル通り、アジェンダビューに各プロジェクトの先頭のサブタスクのみを表示したい。

* Today                            :TODAY:
 * PROJ foo
  * PROJ bar
   * NEXT hoge
   * NEXT fuga
  * PROJ you
   * NEXT can
   * NEXT fly

この場合、fooについてはhogeのみを表示したい。

PROPERTIESのORDEREDがtだと、それぞれの子要素が前の要素に依存するようになる(blockedになる)らしい。依存先の要素がDONEにならない限り、ステータスを変更できなくなる、のかな。

それでorg-agenda-dim-blocked-tasksの値が'invisibleだと、何かに依存している(blocked)要素は表示されなくなるみたいだ。

あとはステータスをPROJにしたらORDEREDをtに、それ以外にしたらORDEREDを削除すれば、上の目的は達成できる。

;; ORDEREDで先頭のタスクのみ表示
(setq org-enforce-todo-dependencies t)
(setq org-enforce-todo-checkbox-dependencies t)
(setq org-agenda-dim-blocked-tasks 'invisible)

;; PROJは自動的にORDEREDにする
(defun phaendal/org-set-proj-ordered ()
  (cond ((equal org-state "PROJ")
         (org-set-property "ORDERED" "t"))
        (t (org-delete-property "ORDERED"))))
(add-hook 'org-after-todo-state-change-hook 'phaendal/org-set-proj-ordered)

あとはorg-agenda-custom-commandsで設定しておいたカスタムビューで、(tags-todo "TODAY")の項目を追加すればok。

広告を非表示にする