5.2 Multi-state Workflow

You can use TODO keywords to indicate sequential working progress states:

(setq org-todo-keywords
      '((sequence "TODO" "FEEDBACK" "VERIFY" "|" "DONE" "DELEGATED")))

The vertical bar separates the ‘TODO’ keywords (states that need action) from the ‘DONE’ states (which need no further action). If you do not provide the separator bar, the last state is used as the ‘DONE’ state. With this setup, the command C-c C-t cycles an entry from ‘TODO’ to ‘FEEDBACK’, then to ‘VERIFY’, and finally to ‘DONE’ and ‘DELEGATED’.

Sometimes you may want to use different sets of TODO keywords in parallel. For example, you may want to have the basic ‘TODO=/=DONE’, but also a workflow for bug fixing. Your setup would then look like this:

(setq org-todo-keywords
      '((sequence "TODO(t)" "|" "DONE(d)")
        (sequence "REPORT(r)" "BUG(b)" "KNOWNCAUSE(k)" "|" "FIXED(f)")))

The keywords should all be different, this helps Org mode to keep track of which subsequence should be used for a given entry. The example also shows how to define keys for fast access of a particular state, by adding a letter in parenthesis after each keyword—you will be prompted for the key after C-c C-t.

To define TODO keywords that are valid only in a single file, use the following text anywhere in the file.

#+TODO: TODO(t) | DONE(d)
#+TODO: REPORT(r) BUG(b) KNOWNCAUSE(k) | FIXED(f)
#+TODO: | CANCELED(c)

After changing one of these lines, use C-c C-c with the cursor still in the line to make the changes known to Org mode.