Next: DIY Use colored Org source blocks per language, Previous: DIY Custom Org todo keyword and priority faces, Up: Advanced customization [Index]
Org provides the user option org-emphasis-alist which associates a
character with a face, list of faces, or face attributes. The default
specification of that variable looks like this:
(setq org-emphasis-alist
'(("*" bold)
("/" italic)
("_" underline)
("=" org-verbatim verbatim)
("~" org-code verbatim)
("+" (:strike-through t))))
With the exception of org-verbatim and org-code faces, everything else
uses the corresponding type of emphasis: a bold typographic weight, or
italicized, underlined, and struck through text.
The best way for users to add some extra attributes, such as a foreground color, is to define their own faces and assign them to the given emphasis marker/character.
This is a custom face that extends the standard bold face with a red
foreground value (so it colorises the text in addition to the bold
weight):
(defface my-org-emphasis-bold '((default :inherit bold) (((class color) (min-colors 88) (background light)) :foreground "#a60000") (((class color) (min-colors 88) (background dark)) :foreground "#ff8059")) "My bold emphasis for Org.")
This face definition reads as follows:
bold face (Configure bold and italic faces).
Same principle for how to extend italic and underline with, for example,
green and yellow hues, respectively:
(defface my-org-emphasis-italic '((default :inherit italic) (((class color) (min-colors 88) (background light)) :foreground "#005e00") (((class color) (min-colors 88) (background dark)) :foreground "#44bc44")) "My italic emphasis for Org.") (defface my-org-emphasis-underline '((default :inherit underline) (((class color) (min-colors 88) (background light)) :foreground "#813e00") (((class color) (min-colors 88) (background dark)) :foreground "#d0bc00")) "My underline emphasis for Org.")
In the case of a strike-through effect, we have no generic face to inherit from, so we can write it as follows to also change the foreground to a more subtle gray:
(defface my-org-emphasis-strike-through '((default :strike-through t) (((class color) (min-colors 88) (background light)) :foreground "#505050") (((class color) (min-colors 88) (background dark)) :foreground "#a8a8a8")) "My strike-through emphasis for Org.")
Or we can just change the color of the line that strikes through the text to, for example, a shade of red:
(defface my-org-emphasis-strike-through '((((class color) (min-colors 88) (background light)) :strike-through "#972500") (((class color) (min-colors 88) (background dark)) :strike-through "#ef8b50")) "My strike-through emphasis for Org.")
It is possible to combine those effects:
(defface my-org-emphasis-strike-through '((((class color) (min-colors 88) (background light)) :strike-through "#972500" :foreground "#505050") (((class color) (min-colors 88) (background dark)) :strike-through "#ef8b50" :foreground "#a8a8a8")) "My strike-through emphasis for Org.")
One may inspect the variables modus-themes-operandi-colors and
modus-themes-vivendi-colors for possible color values. Or call the
command modus-themes-list-colors to show a buffer that previews each
entry in the palette.
Visualize the active Modus theme’s palette.
Once we have defined the faces we need, we must update the
org-emphasis-alist. Given that org-verbatim and org-code are already
styled by the themes, it probably is best not to edit them:
(setq org-emphasis-alist
'(("*" my-org-emphasis-bold)
("/" my-org-emphasis-italic)
("_" my-org-emphasis-underline)
("=" org-verbatim verbatim)
("~" org-code verbatim)
("+" my-org-emphasis-strike-through)))
That’s it! For changes to take effect in already visited Org files, invoke M-x org-mode-restart.