Org-Mode Outline Levels 9+

Emacs’s outline-mode only has font settings aka “faces” for 8 outline levels; then they wrap, so level 9 looks like level 1 and so on.

org-mode inherits these faces, and thus also only defines 8 styles.

That’s more than enough, I believe, to have some visual variety in your outlines and also sufficient distance between repeating styles.

One this that does absolutely not gel with this is using level-1 outline items as actual headings, using e.g. a larger font (often 2x the size), maybe even variable pitch to make it more distinct, because this style would be used for levels 1, 9, 17, 25, etc.

Because I do have large level-1 headings at the moment, but also work with a rather deeply nested outline to document call stacks, I needed more regular-size outline items.

The bottommost level-9 item repeats the large level-1 style to the left; with my changes to the right, it looks ok.

To skip repeating the rather large level-1 style, I increased the supported headings with repeating styles from level-2 onward like this:

(defface org-level-9 '((t :inherit org-level-2))
  "Face used for level 9 headlines."
  :group 'org-faces)
(defface org-level-10 '((t :inherit org-level-3))
  "Face used for level 10 headlines."
  :group 'org-faces)
(defface org-level-11 '((t :inherit org-level-4))
  "Face used for level 11 headlines."
  :group 'org-faces)
(defface org-level-12 '((t :inherit org-level-5))
  "Face used for level 12 headlines."
  :group 'org-faces)
(defface org-level-13 '((t :inherit org-level-6))
  "Face used for level 13 headlines."
  :group 'org-faces)
(defface org-level-14 '((t :inherit org-level-7))
  "Face used for level 14 headlines."
  :group 'org-faces)
(defface org-level-15 '((t :inherit org-level-8))
  "Face used for level 15 headlines."
  :group 'org-faces)
(setq org-level-faces (append org-level-faces (list 'org-level-9 'org-level-10 'org-level-11 'org-level-12 'org-level-13 'org-level-14 'org-level-15)))
(setq org-n-level-faces (length org-level-faces))

The idea came from a StackOverflow post which I simplified by replicating the defface’s of the regular org levels instead of using custom settings.