Use TODO keywords as types
Turns out there are 2 interpretations of TODO keywords: sequence and type. The
more commonly used one, sequence, cycles through keywords one by one with
org-todo (C-c C-t)
(except when fast access is assigned in the form of TODO(t)
).
The type interpretation, as the name suggests, regards each keyword as
independent type. When org-todo
, keyword will jump directly to DONE
state.
That’s the only difference.
Not much of interest at first sight, but at second thought it is very useful for tracking progress in a small team setting. Say I work with colleagues in the same project and we’re in charge of different parts. I can use type sequence to indicate division of labor and setup expected deadlines/schedules as usual, without needing to know their progress details. It’s a task assignment system, only in a much more lightweight fashion. (Yes I’m looking up to you Jira Kanban.)
Hierarchical todo statistics
org-hierarchical-todo-statistics
controls whether TODO statistics should cover
only direct children. This can be set on a per-subtree basis.
Change log note templates
If any of org-log-(done/refile/repeat/reschedule/redeadline)
is set to note
,
then a status change would trigger insertion of a note in the :LOGBOOK:
drawer.
It’s possible to define template for notes via org-log-note-headings
. Here’s my
setting, which adds new timestamp (%s
) to reschedule
and redeadline
:
(setq org-log-note-headings '((done . "CLOSING NOTE %t")
(state . "State %-12s from %-12S %t")
(note . "Note taken on %t")
(reschedule . "Schedule changed on %t: %S -> %s")
(delschedule . "Not scheduled, was %S on %t")
(redeadline . "Deadline changed on %t: %S -> %s")
(deldeadline . "Removed deadline, was %S on %t")
(refile . "Refiled on %t")
(clock-out . "")))
These days I set many of org-log-*
to note
to keep verbose log of task progress.
Whenever a task is delayed/rescheduled/redeadlined, the reasons are kept as
notes in logbook drawer. In this way, a full history is retained while not
intervening normal edits. Verbose timestamps also helps in keeping a daily
working journal, and when using Org Sparse Trees (especially with the c
option).
Org habit
Org-habit tracks consistency of TODO item finish states. It produces a nice graph in Org-agenda that I can at one glance know whether I’m on track.
!
means today and *
means a task has been done on that day. The color
interpretation is intuitive: Green means on track, yellow warning sign of
overdue, red overdue, and blue “still early, don’t feel bad taking a break”.
It’s a feature I’ve been using for a while now and has benefited me most. Setup
is straight-forward (set property STYLE
to habit
and specify repeat frequency),
see Org habit manual for details.
The reality of things consists in their persistent forcing themselves upon our recognition. If a thing has no such persistence, it is a mere dream. Reality, then, is persistence, is regularity.
– C. S. Peirce
That concludes TODO items. On a side note, if you’re interested in my Org or general settings, it’s now published at yiufung/dot-emacs.
Org-mode Hidden Gems series: