emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Orgmode] Easier customization of TODO keyword colors


From: Ryan C. Thompson
Subject: [Orgmode] Easier customization of TODO keyword colors
Date: Thu, 03 Sep 2009 22:20:06 -0700
User-agent: Thunderbird 2.0.0.23 (X11/20090817)

Here is some code I came up with some code to make it easier to customize the colors of various TODO keywords. As long as you just want a different color and nothing else, you can customize the variable org-todo-keyword-faces and use just a string color (i.e. a string of the color name) as the face, and then org-get-todo-face will convert the color to a face, inheriting everything else from the standard org-todo face.

To demonstrate, I currently have org-todo-keyword-faces set to
(("IN PROGRESS" . "dark orange")
 ("WAITING" . "red4")
 ("CANCELED" . "saddle brown"))

Here's the code, in a form you can put in your .emacs.

(eval-after-load 'org-faces
  '(progn
     (defcustom org-todo-keyword-faces nil
       "Faces for specific TODO keywords.
This is a list of cons cells, with TODO keywords in the car and
faces in the cdr.  The face can be a symbol, a color, or a
property list of attributes, like (:foreground \"blue\" :weight
bold :underline t)."
       :group 'org-faces
       :group 'org-todo
       :type '(repeat
               (cons
                (string :tag "Keyword")
                (choice color (sexp :tag "Face")))))))

(eval-after-load 'org
  '(progn
     (defun org-get-todo-face-from-color (color)
       "Returns a specification for a face that inherits from org-todo
  face and has the given color as foreground. Returns nil if
  color is nil."
       (when color
         `(:inherit org-warning :foreground ,color)))

     (defun org-get-todo-face (kwd)
       "Get the right face for a TODO keyword KWD.
If KWD is a number, get the corresponding match group."
       (if (numberp kwd) (setq kwd (match-string kwd)))
       (or (let ((face (cdr (assoc kwd org-todo-keyword-faces))))
             (if (stringp face)
                 (org-get-todo-face-from-color face)
               face))
           (and (member kwd org-done-keywords) 'org-done)
           'org-todo))))




reply via email to

[Prev in Thread] Current Thread [Next in Thread]