P0! Programmer Priorities in Org Mode
Beyond the ABCs of Org priorities


Figure 1: Priorities look like they do on my bugtracker!

Most of the things in org-mode just make sense. To me anyways. However, the default priorities are just strange. [#A], [#B], [#C]…strange syntax and weird to say, "This is Priority A!" From my background in software, everyone uses a P0-P4 system that goes like this:

Most urgent. Do not leave your desk before this is done.
If you don't have anything else, these should be worked on.
Probably can be deleted…you won't get to them.
Untriaged. This is the default state.

I want org-mode to reflect that system. Here's how to get that working. First, install org-fancy-priorities (github)

Making it work

(require 'org-fancy-priorities)
(setq org-priority-highest 0
      org-priority-default 2
      org-priority-lowest 4)
(setq org-fancy-priorities-list '(
                                  (?0 . "P0")
                                  (?1 . "P1")
                                  (?2 . "P2")
                                  (?3 . "P3")
                                  (?4 . "P4"))

      org-priority-faces '((?0 :foreground "DarkRed" :background "LightPink")
                           (?1 :foreground "DarkOrange4" :background "LightGoldenrod")
                           (?2 :foreground "gray20" :background "gray")
                           (?3 :foreground "gray20" :background "gray")
                           (?4 :foreground "gray20" :background "gray")))

You may have noticed that P4 isn't the default priority. P4 is a peculiar "untriaged" default, because in programmer circles, P4 is more important that P3 and P2s. It's essentially an unknown priority, so it could be a terribly important issue. Therefore, I've made the default "blank" priority at P2 level. You can make the call on your priorities.

Converting your old files

Under the hood of course, despite the fancy looking "P0" text you're looking at, the editor is looking at [#0]. So…how to convert your old ABCs to 012s?

(replace-regexp "\\[#A\\]" "[#0]")
(replace-regexp "\\[#B\\]" "[#2]")
(replace-regexp "\\[#C\\]" "[#3]")
Join the newsletter to be kept up to date!