Skip to main content

5.2.3 Multiple keyword sets in one file

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, and a separate state indicating that an item has been canceledβ€”so it is not DONE, but also does not require action. Your setup would then look like this:

(setq org-todo-keywords
'((sequence "TODO" "|" "DONE")
(sequence "REPORT" "BUG" "KNOWNCAUSE" "|" "FIXED")
(sequence "|" "CANCELED")))

The keywords should all be different, this helps Org mode keep track of which subsequence should be used for a given entry. In this setup, C-c C-t only operates within a sub-sequence, so it switches from β€˜DONE’ to (nothing) to β€˜TODO’, and from β€˜FIXED’ to (nothing) to β€˜REPORT’. Therefore you need a mechanism to initially select the correct sequence. In addition to typing a keyword or using completion (see Completion), you may also apply the following commands:

C-u C-u C-c C-t​

C-S-RIGHT​

C-S-LEFT​

These keys jump from one TODO sub-sequence to the next. In the above example, C-u C-u C-c C-t or C-S-RIGHT would jump from β€˜TODO’ or β€˜DONE’ to β€˜REPORT’, and any of the words in the second row to β€˜CANCELED’. Note that the C-S- key binding conflict with shift-selection (see Conflicts).

S-RIGHT​

S-LEFT​

S-LEFT and S-RIGHT walk through all keywords from all sub-sequences, so for example S-RIGHT would switch from β€˜DONE’ to β€˜REPORT’ in the example above. For a discussion of the interaction with shift-selection, see Conflicts.