summaryrefslogtreecommitdiffstats
path: root/emacs
diff options
context:
space:
mode:
authorGravatar Tom Willemse2016-01-28 02:08:38 +0100
committerGravatar Tom Willemse2016-01-28 02:08:38 +0100
commit6697d5af83649262fac7b6f194e8172bbe86e73b (patch)
tree4d0cd7f16a3483d3f3430016da337c2eb0b4de3a /emacs
parentca219e229383bfd0b811a77f99fb8a641d430d57 (diff)
downloaddotfiles-6697d5af83649262fac7b6f194e8172bbe86e73b.tar.gz
dotfiles-6697d5af83649262fac7b6f194e8172bbe86e73b.zip
Dynamically generate keyword and tag faces
Diffstat (limited to 'emacs')
-rw-r--r--emacs/.emacs.d/site-lisp/org-init.el52
1 files changed, 29 insertions, 23 deletions
diff --git a/emacs/.emacs.d/site-lisp/org-init.el b/emacs/.emacs.d/site-lisp/org-init.el
index bd35f41..9281c25 100644
--- a/emacs/.emacs.d/site-lisp/org-init.el
+++ b/emacs/.emacs.d/site-lisp/org-init.el
@@ -26,6 +26,7 @@
(require 'org-habit)
(require 'org-crypt)
+(require 'subr-x)
(eval-when-compile
(require 'desktop)
@@ -133,6 +134,28 @@ predecessor if there is a non-DONE sibling defined before it."
(point))
(point-max)))
+(defun oni:org-generate-todo-keyword-faces ()
+ "Create faces for all todo keywords in the current buffer."
+ (when-let ((keywords (cl-remove-if (lambda (tag) (assoc tag org-todo-keyword-faces))
+ org-todo-keywords-1)))
+ (setq org-todo-keyword-faces
+ (append org-todo-keyword-faces
+ (mapcar (lambda (keyword)
+ (cons keyword (oni:color-for keyword)))
+ keywords)))))
+
+(defun oni:org-generate-tag-faces ()
+ "Create faces for all tags in the current buffer."
+ (when-let ((tags (cl-remove-if (lambda (tag) (assoc (car tag) org-tag-faces))
+ (org-get-buffer-tags))))
+ (setq org-tag-faces
+ (append org-tag-faces
+ (mapcar (lambda (tag)
+ (let ((tag (car tag)))
+ (cons tag (oni:color-for tag))))
+ tags)))
+ (org-set-tag-faces 'org-tag-faces org-tag-faces)))
+
(defun org-init-skip-tags ()
"Skip the \"ex\" and \"unconfirmed\" tags."
(let ((tags (org-get-tags-at (point))))
@@ -230,29 +253,10 @@ predecessor if there is a non-DONE sibling defined before it."
(setq org-tags-column (- 70))
(setq org-tags-exclude-from-inheritance '("crypt"))
(setq org-todo-keyword-faces
- (append '(("ADDED" . "#65a854")
- ("CHANGED" . "#8d995c")
- ("REMOVED" . "#a85454"))
- (oni:org-colors-for '("TODO" "WIP" "DONE" "CANCELLED" "FAILED"
- "ACQUIRE" "IGNORED" "COMMENT" "GOT"
- "TOREAD" "READING" "READ"
- "PLAY" "PLAYING" "PLAYED"
- "LISTEN" "LISTENED"))))
-(setq org-tag-faces
- (oni:org-colors-for '("noexport" "tv" "dailies" "ex" "maintenance"
- "housework" "cdispass" "clark" "emacsd"
- "eye_on_manga" "kaarvok" "silbot" "hypo"
- "unconfirmed" "gitto" "urxvt_modeline"
- "scrumli" "clark_conkeror"
- "git_auto_commit_mode" "mode_icons"
- "dispassel" "hypo_emacs" "hypocli"
- "conkeror" "transient_navigation" "pkgbuilds"
- "edocs" "cask" "fiplr" "avandu"
- "gitolite_admin" "yoshi_theme" "dvdroid"
- "commit_check" "imsleepy" "indent_shift"
- "work" "picturefix" "euler" "scss_imenu"
- "bookmark" "blog" "shirtlobby"
- "roterdamfestivals")))
+ '(("ADDED" . "#65a854")
+ ("CHANGED" . "#8d995c")
+ ("REMOVED" . "#a85454")))
+
(setq org-use-fast-todo-selection t)
(setq org-agenda-skip-function-global 'org-init-skip-tags)
(setq org-use-property-inheritance '("slug"))
@@ -261,6 +265,8 @@ predecessor if there is a non-DONE sibling defined before it."
(setq org-insert-heading-respect-content t)
(setf (cdar org-blank-before-new-entry) t)
+(add-hook 'org-mode-hook #'oni:org-generate-tag-faces)
+(add-hook 'org-mode-hook #'oni:org-generate-todo-keyword-faces)
(add-hook 'org-agenda-mode-hook 'org-agenda-to-appt)
(add-to-list 'org-modules 'org-habit)