about summary refs log tree commit diff
path: root/configs/shared/emacs/.emacs.d/elpa/doom-themes-20180720.438/doom-themes-org.el
diff options
context:
space:
mode:
Diffstat (limited to 'configs/shared/emacs/.emacs.d/elpa/doom-themes-20180720.438/doom-themes-org.el')
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/doom-themes-20180720.438/doom-themes-org.el86
1 files changed, 86 insertions, 0 deletions
diff --git a/configs/shared/emacs/.emacs.d/elpa/doom-themes-20180720.438/doom-themes-org.el b/configs/shared/emacs/.emacs.d/elpa/doom-themes-20180720.438/doom-themes-org.el
new file mode 100644
index 0000000000..7914e9237d
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/doom-themes-20180720.438/doom-themes-org.el
@@ -0,0 +1,86 @@
+;;; doom-themes-org.el --- improve org-mode support for doom-themes -*- lexical-binding: t; -*-
+
+(defgroup doom-org nil
+  "Options for doom's org customizations."
+  :group 'doom-themes)
+
+(defcustom doom-org-special-tags t
+  "If non-nil, highlight #hashtags and @attags especially."
+  :type 'boolean
+  :group 'doom-org)
+
+;; TODO Remove this once released with org-mode
+(defface org-upcoming-distant-deadline '((t :inherit font-lock-comment-face))
+  "Face for items scheduled previously, not done, and have a distant deadline.
+See also `org-agenda-deadline-faces'."
+  :group 'doom-org)
+
+;;
+(defsubst doom-org--tag-face (n)
+  (let ((kwd (match-string n)))
+    (or (and (equal kwd "#") 'org-tag)
+        (and (equal kwd "@") 'org-formula))))
+
+(defun doom-org-custom-fontification ()
+  "Correct (and improve) org-mode's font-lock keywords.
+
+  1. Re-set `org-todo' & `org-headline-done' faces, to make them respect
+     (inherit) underlying faces.
+  2. Make statistic cookies respect (inherit) underlying faces.
+  3. Fontify item bullets (make them stand out)
+  4. Fontify item checkboxes (and when they're marked done), like TODOs that are
+     marked done.
+  5. Fontify dividers/separators (5+ dashes)
+  6. Fontify #hashtags and @at-tags, for personal convenience; see
+     `doom-org-special-tags' to disable this."
+  (let ((org-todo (format org-heading-keyword-regexp-format
+                          org-todo-regexp))
+        (org-done (format org-heading-keyword-regexp-format
+                          (concat "\\(?:" (mapconcat #'regexp-quote org-done-keywords "\\|") "\\)"))))
+    (setq
+     org-font-lock-extra-keywords
+     (append (org-delete-all
+              (append `(("\\[\\([0-9]*%\\)\\]\\|\\[\\([0-9]*\\)/\\([0-9]*\\)\\]"
+                         (0 (org-get-checkbox-statistics-face) t))
+                        (,org-todo (2 (org-get-todo-face 2) t))
+                        (,org-done (2 'org-headline-done t)))
+                      (when (memq 'date org-activate-links)
+                        '((org-activate-dates (0 'org-date t)))))
+              org-font-lock-extra-keywords)
+             ;; respsect underlying faces!
+             `((,org-todo (2 (org-get-todo-face 2) prepend))
+               (,org-done (2 'org-headline-done prepend)))
+             (when (memq 'date org-activate-links)
+               '((org-activate-dates (0 'org-date prepend))))
+             ;; Make checkbox statistic cookies respect underlying faces
+             '(("\\[\\([0-9]*%\\)\\]\\|\\[\\([0-9]*\\)/\\([0-9]*\\)\\]"
+                (0 (org-get-checkbox-statistics-face) prepend))
+               ;; I like how org-mode fontifies checked TODOs and want this to extend to
+               ;; checked checkbox items:
+               ("^[ \t]*\\(?:[-+*]\\|[0-9]+[).]\\)[ \t]+\\(\\(?:\\[@\\(?:start:\\)?[0-9]+\\][ \t]*\\)?\\[\\(?:X\\|\\([0-9]+\\)/\\2\\)\\][^\n]*\n\\)"
+                1 'org-headline-done prepend)
+               ;; make plain list bullets stand out
+               ("^ *\\([-+]\\|[0-9]+[).]\\) " 1 'org-list-dt append)
+               ;; and separators/dividers
+               ("^ *\\(-----+\\)$" 1 'org-meta-line))
+             ;; custom #hashtags & @at-tags for another level of organization
+             (when doom-org-special-tags
+               '(("\\s-\\(\\([#@]\\)[^+ \n.,]+\\)" 1 (doom-org--tag-face 2) prepend)))))))
+
+
+;; Bootstrap
+(setq org-hide-leading-stars t
+      org-hide-leading-stars-before-indent-mode t
+      org-fontify-done-headline t
+      org-fontify-quote-and-verse-blocks t
+      org-fontify-whole-heading-line t
+      org-agenda-deadline-faces
+      '((1.001 . error)
+        (1.0 . org-warning)
+        (0.5 . org-upcoming-deadline)
+        (0.0 . org-upcoming-distant-deadline)))
+
+(add-hook 'org-font-lock-set-keywords-hook #'doom-org-custom-fontification)
+
+(provide 'doom-themes-org)
+;;; doom-themes-org.el ends here