about summary refs log tree commit diff
path: root/configs/shared/emacs/.emacs.d/elpa/doom-themes-20180720.438/doom-themes-common.el
diff options
context:
space:
mode:
Diffstat (limited to 'configs/shared/emacs/.emacs.d/elpa/doom-themes-20180720.438/doom-themes-common.el')
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/doom-themes-20180720.438/doom-themes-common.el1377
1 files changed, 1377 insertions, 0 deletions
diff --git a/configs/shared/emacs/.emacs.d/elpa/doom-themes-20180720.438/doom-themes-common.el b/configs/shared/emacs/.emacs.d/elpa/doom-themes-20180720.438/doom-themes-common.el
new file mode 100644
index 0000000000..e91518fc1a
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/doom-themes-20180720.438/doom-themes-common.el
@@ -0,0 +1,1377 @@
+;;; doom-themes-common.el -*- lexical-binding: t; -*-
+
+(defvar doom-themes-common-faces
+  '(;; --- custom faces -----------------------
+    (doom-modeline-error
+     :background (doom-darken red 0.25)
+     :foreground base0
+     :distant-foreground base0)
+
+    ;; --- base faces -------------------------
+    (bold        :weight 'bold :foreground (unless bold base8))
+    (italic      :slant  'italic)
+    (bold-italic :inherit '(bold italic))
+
+    (default :background bg :foreground fg)
+    (fringe :inherit 'default :foreground base4)
+    (region               :background region     :foreground nil   :distant-foreground (doom-darken fg 0.2))
+    (highlight            :background highlight  :foreground base0 :distant-foreground base8)
+    (cursor               :background highlight)
+    (shadow               :foreground base5)
+    (minibuffer-prompt    :foreground highlight)
+    (tooltip              :background base3 :foreground fg)
+    (secondary-selection  :background grey)
+    (lazy-highlight       :background dark-blue  :foreground base8 :distant-foreground base0 :weight 'bold)
+    (match                :foreground green      :background base0 :weight 'bold)
+    (trailing-whitespace  :background red)
+    (nobreak-space        :inherit 'default :underline nil)
+    (vertical-border      :background vertical-bar :foreground vertical-bar)
+    (link                 :foreground highlight :underline t :weight 'bold)
+
+    (error   :foreground error)
+    (warning :foreground warning)
+    (success :foreground success)
+
+    (font-lock-builtin-face              :foreground builtin)
+    (font-lock-comment-face              :foreground comments)
+    (font-lock-comment-delimiter-face    :inherit 'font-lock-comment-face)
+    (font-lock-doc-face                  :inherit 'font-lock-comment-face :foreground doc-comments)
+    (font-lock-constant-face             :foreground constants)
+    (font-lock-function-name-face        :foreground functions)
+    (font-lock-keyword-face              :foreground keywords)
+    (font-lock-string-face               :foreground strings)
+    (font-lock-type-face                 :foreground type)
+    (font-lock-variable-name-face        :foreground variables)
+    (font-lock-warning-face              :inherit 'warning)
+    (font-lock-negation-char-face        :inherit 'bold :foreground operators)
+    (font-lock-preprocessor-face         :inherit 'bold :foreground operators)
+    (font-lock-preprocessor-char-face    :inherit 'bold :foreground operators)
+    (font-lock-regexp-grouping-backslash :inherit 'bold :foreground operators)
+    (font-lock-regexp-grouping-construct :inherit 'bold :foreground operators)
+
+    ;; mode-line / header-line
+    (mode-line           :background bg     :foreground fg     :distant-foreground bg)
+    (mode-line-inactive  :background bg-alt :foreground fg-alt :distant-foreground bg-alt)
+    (mode-line-emphasis  :foreground highlight :distant-foreground bg)
+    (mode-line-highlight :inherit 'highlight :distant-foreground bg)
+    (mode-line-buffer-id :weight 'bold)
+    (header-line :inherit 'mode-line :distant-foreground bg)
+
+    ;; 1. Line number faces must explicitly disable its text style attributes
+    ;;    because nearby faces may "bleed" into the line numbers otherwise.
+    ;; 2. All other line number plugin faces should &inherit from these.
+    (line-number
+     :inherit 'default
+     :foreground base5 :distant-foreground nil
+     :weight 'normal :italic nil :underline nil :strike-through nil)
+    (line-number-current-line
+     :inherit '(hl-line default)
+     :foreground fg :distant-foreground nil
+     :weight 'normal :italic nil :underline nil :strike-through nil)
+
+
+    ;; --- built-in plugin faces --------------
+    ;; cperl
+    (cperl-array-face          :weight 'bold :inherit 'font-lock-variable-name-face)
+    (cperl-hash-face           :weight 'bold :slant 'italic :inherit 'font-lock-variable-name-face)
+    (cperl-nonoverridable-face :inherit 'font-lock-builtin-face)
+
+    ;; compilation
+    (compilation-column-number  :inherit 'font-lock-comment-face)
+    (compilation-line-number    :foreground highlight)
+    (compilation-error   :inherit 'error   :weight 'bold)
+    (compilation-warning :inherit 'warning :slant 'italic)
+    (compilation-info    :inherit 'success)
+    (compilation-mode-line-exit :inherit 'compilation-info)
+    (compilation-mode-line-fail :inherit 'compilation-error)
+
+    ;; custom
+    (custom-button                  :foreground blue   :background bg     :box '(:line-width 1 :style none))
+    (custom-button-unraised         :foreground violet :background bg     :box '(:line-width 1 :style none))
+    (custom-button-pressed-unraised :foreground bg     :background violet :box '(:line-width 1 :style none))
+    (custom-button-pressed          :foreground bg     :background blue   :box '(:line-width 1 :style none))
+    (custom-button-mouse            :foreground bg     :background blue   :box '(:line-width 1 :style none))
+
+    (custom-variable-button   :foreground green :underline t)
+    (custom-saved             :foreground green :background (doom-blend green bg 0.2) :bold bold)
+    (custom-comment           :foreground fg :background region)
+    (custom-comment-tag       :foreground grey)
+    (custom-modified          :foreground blue :background (doom-blend blue bg 0.2))
+    (custom-variable-tag      :foreground magenta)
+    (custom-visibility        :foreground blue :underline nil)
+    (custom-group-subtitle    :foreground red)
+    (custom-group-tag         :foreground violet)
+    (custom-group-tag-1       :foreground blue)
+    (custom-set               :foreground yellow :background bg)
+    (custom-themed            :foreground yellow :background bg)
+    (custom-invalid           :foreground red :background (doom-blend red bg 0.2))
+    (custom-variable-obsolete :foreground grey :background bg)
+    (custom-state             :foreground green :background (doom-blend green bg 0.2))
+    (custom-changed           :foreground blue :background bg)
+
+    ;; dired
+    (dired-directory  :foreground builtin)
+    (dired-ignored    :foreground comments)
+    (dired-flagged    :foreground red)
+    (dired-header     :foreground blue :weight 'bold)
+    (dired-mark       :foreground orange :weight 'bold)
+    (dired-marked     :foreground magenta :weight 'bold)
+    (dired-perm-write :foreground fg :underline t)
+    (dired-symlink    :foreground cyan :weight 'bold)
+    (dired-warning    :foreground warning)
+
+    ;; ediff
+    (ediff-fine-diff-A    :background (doom-blend selection bg 0.7) :weight 'bold)
+    (ediff-fine-diff-B    :inherit 'ediff-fine-diff-A)
+    (ediff-fine-diff-C    :inherit 'ediff-fine-diff-A)
+    (ediff-current-diff-A :background (doom-blend selection bg 0.3))
+    (ediff-current-diff-B :inherit 'ediff-current-diff-A)
+    (ediff-current-diff-C :inherit 'ediff-current-diff-A)
+    (ediff-even-diff-A    :inherit 'hl-line)
+    (ediff-even-diff-B    :inherit 'ediff-even-diff-A)
+    (ediff-even-diff-C    :inherit 'ediff-even-diff-A)
+    (ediff-odd-diff-A     :inherit 'ediff-even-diff-A)
+    (ediff-odd-diff-B     :inherit 'ediff-odd-diff-A)
+    (ediff-odd-diff-C     :inherit 'ediff-odd-diff-A)
+
+    ;; elfeed
+    (elfeed-log-debug-level-face :foreground comments)
+    (elfeed-log-error-level-face :inherit 'error)
+    (elfeed-log-info-level-face  :inherit 'success)
+    (elfeed-log-warn-level-face  :inherit 'warning)
+    (elfeed-search-date-face     :foreground violet)
+    (elfeed-search-feed-face     :foreground blue)
+    (elfeed-search-tag-face      :foreground comments)
+    (elfeed-search-title-face    :foreground comments)
+    (elfeed-search-filter-face   :foreground violet)
+    (elfeed-search-unread-count-face :foreground yellow)
+    (elfeed-search-unread-title-face :foreground fg :weight 'bold)
+
+    ;; eshell
+    (eshell-prompt        :foreground highlight :weight 'bold)
+    (eshell-ls-archive    :foreground magenta)
+    (eshell-ls-backup     :foreground yellow)
+    (eshell-ls-clutter    :foreground red)
+    (eshell-ls-directory  :foreground blue)
+    (eshell-ls-executable :foreground green)
+    (eshell-ls-missing    :foreground red)
+    (eshell-ls-product    :foreground orange)
+    (eshell-ls-readonly   :foreground orange)
+    (eshell-ls-special    :foreground violet)
+    (eshell-ls-symlink    :foreground cyan)
+    (eshell-ls-unreadable :foreground base5)
+
+    ;; flx-ido
+    (flx-highlight-face :weight 'bold :foreground yellow :underline nil)
+
+    ;; hl-line
+    (hl-line :background bg-alt)
+
+    ;; ido
+    (ido-first-match :foreground orange)
+    (ido-indicator   :foreground red :background bg)
+    (ido-only-match  :foreground green)
+    (ido-subdir      :foreground violet)
+    (ido-virtual     :foreground comments)
+
+    ;; isearch
+    (isearch :background highlight :foreground base0 :weight 'bold)
+
+    ;; linum
+    ((linum &inherit line-number))
+
+    ;; message
+    (message-header-name       :foreground green)
+    (message-header-subject    :foreground highlight :weight 'bold)
+    (message-header-to         :foreground highlight :weight 'bold)
+    (message-header-cc         :inherit 'message-header-to :foreground (doom-darken highlight 0.15))
+    (message-header-other      :foreground violet)
+    (message-header-newsgroups :foreground yellow)
+    (message-header-xheader    :foreground doc-comments)
+    (message-separator         :foreground comments)
+    (message-mml               :foreground comments :slant 'italic)
+    (message-cited-text        :foreground magenta)
+
+    ;; term
+    (term               :foreground fg)
+    (term-bold          :weight 'bold)
+    (term-color-black   :background base0   :foreground base0)
+    (term-color-red     :background red     :foreground red)
+    (term-color-green   :background green   :foreground green)
+    (term-color-yellow  :background yellow  :foreground yellow)
+    (term-color-blue    :background blue    :foreground blue)
+    (term-color-magenta :background magenta :foreground magenta)
+    (term-color-cyan    :background cyan    :foreground cyan)
+    (term-color-white   :background base8   :foreground base8)
+
+    ;; window-divider
+    (window-divider :inherit 'vertical-border)
+    (window-divider-first-pixel :inherit 'window-divider)
+    (window-divider-last-pixel  :inherit 'window-divider)
+
+
+    ;; --- plugin faces -----------------------
+    ;; all-the-icons
+    (all-the-icons-red      :foreground red)
+    (all-the-icons-lred     :foreground (doom-lighten red 0.3))
+    (all-the-icons-dred     :foreground (doom-darken red 0.3))
+    (all-the-icons-green    :foreground green)
+    (all-the-icons-lgreen   :foreground (doom-lighten green 0.3))
+    (all-the-icons-dgreen   :foreground (doom-darken green 0.3))
+    (all-the-icons-yellow   :foreground yellow)
+    (all-the-icons-lyellow  :foreground (doom-lighten yellow 0.3))
+    (all-the-icons-dyellow  :foreground (doom-darken yellow 0.3))
+    (all-the-icons-blue     :foreground blue)
+    (all-the-icons-blue-alt :foreground teal)
+    (all-the-icons-lblue    :foreground (doom-lighten blue 0.3))
+    (all-the-icons-dblue    :foreground dark-blue)
+    (all-the-icons-maroon   :foreground magenta)
+    (all-the-icons-lmaroon  :foreground (doom-lighten magenta 0.3))
+    (all-the-icons-dmaroon  :foreground (doom-darken magenta 0.3))
+    (all-the-icons-purple   :foreground violet)
+    (all-the-icons-lpurple  :foreground (doom-lighten violet 0.3))
+    (all-the-icons-dpurple  :foreground (doom-darken violet 0.3))
+    (all-the-icons-cyan     :foreground cyan)
+    (all-the-icons-cyan-alt :foreground cyan)
+    (all-the-icons-lcyan    :foreground (doom-lighten cyan 0.3))
+    (all-the-icons-dcyan    :foreground dark-cyan)
+    (all-the-icons-pink     :foreground (doom-lighten red 0.35))
+    (all-the-icons-lpink    :foreground (doom-lighten red 0.55))
+    (all-the-icons-dpink    :foreground red)
+    (all-the-icons-silver   :foreground grey)
+    (all-the-icons-lsilver  :foreground (doom-lighten grey 0.3))
+    (all-the-icons-dsilver  :foreground (doom-darken grey 0.3))
+
+    ;; avy
+    (avy-background-face :foreground comments)
+    (avy-lead-face :background highlight :foreground bg :distant-foreground fg :weight 'bold)
+    (avy-lead-face-0
+     (&all   :inherit 'avy-lead-face)
+     (&dark  :background (doom-lighten highlight 0.3))
+     (&light :background (doom-darken highlight 0.3)))
+    (avy-lead-face-1
+     (&all   :inherit 'avy-lead-face)
+     (&dark  :background (doom-lighten highlight 0.6))
+     (&light :background (doom-darken highlight 0.6)))
+    (avy-lead-face-2
+     (&all   :inherit 'avy-lead-face)
+     (&dark  :background (doom-lighten highlight 0.9))
+     (&light :background (doom-darken highlight 0.9)))
+
+    ;; bookmark+
+    (bmkp-*-mark :foreground bg :background yellow)
+    (bmkp->-mark :foreground yellow)
+    (bmkp-D-mark :foreground bg :background red)
+    (bmkp-X-mark :foreground red)
+    (bmkp-a-mark :background red)
+    (bmkp-bad-bookmark :foreground bg :background yellow)
+    (bmkp-bookmark-file :foreground violet :background bg-alt)
+    (bmkp-bookmark-list :background bg-alt)
+    (bmkp-buffer :foreground blue)
+    (bmkp-desktop :foreground bg :background violet)
+    (bmkp-file-handler :background red)
+    (bmkp-function :foreground green)
+    (bmkp-gnus :foreground orange)
+    (bmkp-heading :foreground yellow)
+    (bmkp-info :foreground cyan)
+    (bmkp-light-autonamed :foreground bg-alt :background cyan)
+    (bmkp-light-autonamed-region :foreground bg-alt :background red)
+    (bmkp-light-fringe-autonamed :foreground bg-alt :background violet)
+    (bmkp-light-fringe-non-autonamed :foreground bg-alt :background green)
+    (bmkp-light-mark :foreground bg :background cyan)
+    (bmkp-light-non-autonamed :foreground bg :background violet)
+    (bmkp-light-non-autonamed-region :foreground bg :background red)
+    (bmkp-local-directory :foreground bg :background violet)
+    (bmkp-local-file-with-region :foreground yellow)
+    (bmkp-local-file-without-region :foreground comments)
+    (bmkp-man :foreground violet)
+    (bmkp-no-jump :foreground comments)
+    (bmkp-no-local :foreground yellow)
+    (bmkp-non-file :foreground green)
+    (bmkp-remote-file :foreground orange)
+    (bmkp-sequence :foreground blue)
+    (bmkp-su-or-sudo :foreground red)
+    (bmkp-t-mark :foreground violet)
+    (bmkp-url :foreground blue :underline t)
+    (bmkp-variable-list :foreground green)
+
+    ;; calfw
+    (cfw:face-title              :foreground blue                     :weight 'bold :height 2.0 :inherit 'variable-pitch)
+    (cfw:face-header             :foreground (doom-blend blue bg 0.8) :weight 'bold)
+    (cfw:face-sunday             :foreground (doom-blend red bg 0.8)  :weight 'bold)
+    (cfw:face-saturday           :foreground (doom-blend red bg 0.8)  :weight 'bold)
+    (cfw:face-holiday            :foreground nil :background bg-alt   :weight 'bold)
+    (cfw:face-grid               :foreground vertical-bar)
+    (cfw:face-periods            :foreground yellow)
+    (cfw:face-toolbar            :foreground nil :background nil)
+    (cfw:face-toolbar-button-off :foreground base6                    :weight 'bold             :inherit 'variable-pitch)
+    (cfw:face-toolbar-button-on  :foreground blue                     :weight 'bold             :inherit 'variable-pitch)
+    (cfw:face-default-content    :foreground fg)
+    (cfw:face-day-title          :foreground fg                       :weight 'bold)
+    (cfw:face-today-title        :foreground bg  :background blue     :weight 'bold)
+    (cfw:face-default-day                                             :weight 'bold)
+    (cfw:face-today              :foreground nil :background nil      :weight 'bold)
+    (cfw:face-annotation         :foreground violet)
+    (cfw:face-disable            :foreground grey)
+    (cfw:face-select             :background region)
+
+    ;; company
+    (company-tooltip            :inherit 'tooltip)
+    (company-tooltip-common                           :foreground highlight :distant-foreground base0 :weight 'bold)
+    (company-tooltip-search     :background highlight :foreground bg :distant-foreground fg :weight 'bold)
+    (company-tooltip-search-selection :background (doom-darken selection 0.25))
+    (company-tooltip-selection  :background selection :weight 'bold)
+    (company-tooltip-mouse      :background magenta   :foreground bg :distant-foreground fg)
+    (company-tooltip-annotation                       :foreground violet :distant-foreground bg)
+    (company-scrollbar-bg       :inherit 'tooltip)
+    (company-scrollbar-fg       :background highlight)
+    (company-preview                              :foreground comments)
+    (company-preview-common     :background base3 :foreground highlight)
+    (company-preview-search     :inherit 'company-tooltip-search)
+    (company-template-field     :inherit 'match)
+
+    ;; company-box
+    (company-box-candidate :foreground fg)
+
+    ;; circe
+    (circe-fool :foreground doc-comments)
+    (circe-highlight-nick-face :weight 'bold :foreground constants)
+    (circe-prompt-face :weight 'bold :foreground highlight)
+    (circe-server-face :foreground comments)
+    (circe-my-message-face :weight 'bold)
+
+    ;; diff-hl
+    (diff-hl-change :foreground vc-modified)
+    (diff-hl-delete :foreground vc-deleted)
+    (diff-hl-insert :foreground vc-added)
+
+    ;; diff-mode
+    (diff-added   :inherit 'hl-line :foreground green)
+    (diff-changed :foreground violet)
+    (diff-context
+     (&dark  :foreground (doom-darken fg 0.12))
+     (&light :foreground (doom-lighten fg 0.12)))
+    (diff-removed :foreground red :background base3)
+    (diff-header  :foreground cyan :background nil)
+    (diff-file-header :foreground blue :background nil)
+    (diff-hunk-header :foreground violet)
+    (diff-refine-added   :inherit 'diff-added :inverse-video t)
+    (diff-refine-changed :inherit 'diff-changed :inverse-video t)
+    (diff-refine-removed :inherit 'diff-removed :inverse-video t)
+
+    ;; dired+
+    (diredp-file-name              :foreground base8)
+    (diredp-dir-name               :foreground base8 :weight 'bold)
+    (diredp-ignored-file-name      :foreground base5)
+    (diredp-compressed-file-suffix :foreground base5)
+    (diredp-symlink                :foreground violet)
+    (diredp-dir-heading            :foreground blue  :weight 'bold)
+    (diredp-file-suffix            :foreground violet)
+    (diredp-read-priv              :foreground magenta)
+    (diredp-write-priv             :foreground green)
+    (diredp-exec-priv              :foreground yellow)
+    (diredp-rare-priv              :foreground red   :weight 'bold)
+    (diredp-dir-priv               :foreground blue  :weight 'bold)
+    (diredp-no-priv                :foreground base5)
+    (diredp-number                 :foreground magenta)
+    (diredp-date-time              :foreground blue)
+
+    ;; dired-k
+    (dired-k-directory :foreground blue)
+
+    ;; dired-subtree
+    (dired-subtree-depth-1-face :background (doom-darken bg-alt 0.02))
+    (dired-subtree-depth-2-face :background (doom-darken bg-alt 0.04))
+    (dired-subtree-depth-3-face :background (doom-darken bg-alt 0.06))
+    (dired-subtree-depth-4-face :background (doom-darken bg-alt 0.08))
+    (dired-subtree-depth-5-face :background (doom-darken bg-alt 0.10))
+    (dired-subtree-depth-6-face :background (doom-darken bg-alt 0.12))
+
+    ;; diredfl
+    (diredfl-autofile-name          :foreground base4 :background bg-alt)
+    (diredfl-compressed-file-name   :foreground yellow :background bg-alt)
+    (diredfl-compressed-file-suffix :foreground (doom-blend orange bg-alt 0.6) :background bg-alt)
+    (diredfl-date-time              :foreground cyan :background bg-alt :weight 'light)
+    (diredfl-deletion               :foreground red :background (doom-blend red bg-alt 0.2) :weight 'bold)
+    (diredfl-deletion-file-name     :foreground red :background (doom-blend red bg-alt 0.2))
+    (diredfl-dir-heading            :foreground blue :background bg-alt :weight 'bold)
+    (diredfl-dir-name               :foreground blue :background bg-alt)
+    (diredfl-dir-priv               :foreground blue :background bg-alt)
+    (diredfl-exec-priv              :foreground green :background bg-alt)
+    (diredfl-executable-tag         :foreground green :background bg-alt)
+    (diredfl-file-name              :foreground fg :background bg-alt)
+    (diredfl-file-suffix            :foreground (doom-blend fg bg-alt 0.6) :background bg-alt)
+    (diredfl-flag-mark              :foreground yellow :background (doom-blend yellow bg-alt 0.2) :weight 'bold)
+    (diredfl-flag-mark-line         :background (doom-blend yellow bg-alt 0.1))
+    (diredfl-ignored-file-name      :foreground comments :background bg-alt)
+    (diredfl-link-priv              :foreground violet :background bg-alt)
+    (diredfl-no-priv                :foreground fg :background bg-alt)
+    (diredfl-number                 :foreground orange :background bg-alt)
+    (diredfl-other-priv             :foreground magenta :background bg-alt)
+    (diredfl-rare-priv              :foreground fg :background bg-alt)
+    (diredfl-read-priv              :foreground yellow :background bg-alt)
+    (diredfl-symlink                :foreground violet :background bg-alt)
+    (diredfl-tagged-autofile-name   :foreground base5 :background bg-alt)
+    (diredfl-write-priv             :foreground red :background bg-alt)
+
+    ;; elscreen
+    (elscreen-tab-background-face     :background bg)
+    (elscreen-tab-control-face        :background bg     :foreground bg)
+    (elscreen-tab-current-screen-face :background bg-alt :foreground fg)
+    (elscreen-tab-other-screen-face   :background bg     :foreground fg-alt)
+
+    ;; erc
+    (erc-button :weight 'bold :underline t)
+    (erc-default-face :inherit 'default)
+    (erc-action-face  :weight 'bold)
+    (erc-command-indicator-face :weight 'bold)
+    (erc-direct-msg-face :foreground magenta)
+    (erc-error-face :inherit 'error)
+    (erc-header-line :background (doom-darken bg-alt 0.15) :foreground highlight)
+    (erc-input-face :foreground green)
+    (erc-current-nick-face :foreground green :weight 'bold)
+    (erc-timestamp-face :foreground blue :weight 'bold)
+    (erc-nick-default-face :weight 'bold)
+    (erc-nick-msg-face :foreground magenta)
+    (erc-nick-prefix-face :inherit 'erc-nick-default-face)
+    (erc-my-nick-face :foreground green :weight 'bold)
+    (erc-my-nick-prefix-face :inherit 'erc-my-nick-face)
+    (erc-notice-face :foreground comments)
+    (erc-prompt-face :foreground highlight :weight 'bold)
+
+    ;; evil
+    (evil-ex-info                   :foreground error :slant 'italic)
+    (evil-ex-substitute-matches     :background base0 :foreground red   :strike-through t :weight 'bold)
+    (evil-ex-substitute-replacement :background base0 :foreground green :weight 'bold)
+    (evil-search-highlight-persist-highlight-face :inherit 'lazy-highlight)
+
+    ;; evil-mc
+    (evil-mc-cursor-default-face :background magenta :foreground base0 :inverse-video nil)
+    (evil-mc-region-face :inherit 'region)
+    (evil-mc-cursor-bar-face :height 1 :background magenta :foreground base0)
+    (evil-mc-cursor-hbar-face :underline `(:color ,highlight))
+
+    ;; evil-snipe
+    (evil-snipe-first-match-face :foreground highlight :background dark-blue :weight 'bold)
+    (evil-snipe-matches-face     :foreground highlight :underline t :weight 'bold)
+
+    ;; evil-googles
+    (evil-goggles-default-face :inherit 'region)
+
+    ;; flycheck
+    (flycheck-error     :underline `(:style wave :color ,red))
+    (flycheck-warning   :underline `(:style wave :color ,yellow))
+    (flycheck-info      :underline `(:style wave :color ,green))
+
+    ;; flycheck-posframe
+    (flycheck-posframe-face :inherit 'default)
+    (flycheck-posframe-background-face :background bg-alt)
+    (flycheck-posframe-error-face   :inherit 'flycheck-posframe-face :foreground error)
+    (flycheck-posframe-info-face    :inherit 'flycheck-posframe-face :foreground fg)
+    (flycheck-posframe-warning-face :inherit 'flycheck-posframe-face :foreground warning)
+
+    ;; flymake
+    (flymake-error   :underline `(:style wave :color ,red))
+    (flymake-note    :underline `(:style wave :color ,green))
+    (flymake-warning :underline `(:style wave :color ,orange))
+
+    ;; flyspell
+    (flyspell-incorrect :underline `(:style wave :color ,error) :inherit 'unspecified)
+
+    ;; git-commit
+    (git-commit-summary :foreground strings)
+    (git-commit-overlong-summary :inherit 'error :background base0 :slant 'italic :weight 'bold)
+    (git-commit-nonempty-second-line :inherit 'git-commit-overlong-summary)
+    (git-commit-note :foreground cyan :slant 'italic)
+    (git-commit-pseudo-header :foreground doc-comments :slant 'italic)
+    (git-commit-known-pseudo-header :foreground doc-comments :weight 'bold :slant 'italic)
+    (git-commit-comment-branch-local :foreground magenta)
+    (git-commit-comment-branch-remote :foreground green)
+    (git-commit-comment-detached :foreground orange)
+    (git-commit-comment-heading :foreground keywords)
+    (git-commit-comment-file :foreground violet)
+    (git-commit-comment-action)
+
+    ;; git-gutter
+    (git-gutter:modified :foreground vc-modified)
+    (git-gutter:added    :foreground vc-added)
+    (git-gutter:deleted  :foreground vc-deleted)
+
+    ;; git-gutter+
+    (git-gutter+-modified :foreground vc-modified :background nil)
+    (git-gutter+-added    :foreground vc-added :background nil)
+    (git-gutter+-deleted  :foreground vc-deleted :background nil)
+
+    ;; git-gutter-fringe
+    ((git-gutter-fr:modified &inherit git-gutter:modified))
+    ((git-gutter-fr:added    &inherit git-gutter:added))
+    ((git-gutter-fr:deleted  &inherit git-gutter:deleted))
+
+    ;; gnus
+    (gnus-group-mail-1           :weight 'bold :foreground fg)
+    (gnus-group-mail-2           :inherit 'gnus-group-mail-1)
+    (gnus-group-mail-3           :inherit 'gnus-group-mail-1)
+    (gnus-group-mail-1-empty     :foreground base5)
+    (gnus-group-mail-2-empty     :inherit 'gnus-group-mail-1-empty)
+    (gnus-group-mail-3-empty     :inherit 'gnus-group-mail-1-empty)
+    (gnus-group-news-1           :inherit 'gnus-group-mail-1)
+    (gnus-group-news-2           :inherit 'gnus-group-news-1)
+    (gnus-group-news-3           :inherit 'gnus-group-news-1)
+    (gnus-group-news-4           :inherit 'gnus-group-news-1)
+    (gnus-group-news-5           :inherit 'gnus-group-news-1)
+    (gnus-group-news-6           :inherit 'gnus-group-news-1)
+    (gnus-group-news-1-empty     :inherit 'gnus-group-mail-1-empty)
+    (gnus-group-news-2-empty     :inherit 'gnus-groupnews-1-empty)
+    (gnus-group-news-3-empty     :inherit 'gnus-groupnews-1-empty)
+    (gnus-group-news-4-empty     :inherit 'gnus-groupnews-1-empty)
+    (gnus-group-news-5-empty     :inherit 'gnus-groupnews-1-empty)
+    (gnus-group-news-6-empty     :inherit 'gnus-groupnews-1-empty)
+    (gnus-group-mail-low         :inherit 'gnus-group-mail-1 :weight 'normal)
+    (gnus-group-mail-low-empty   :inherit 'gnus-group-mail-1-empty)
+    (gnus-group-news-low         :inherit 'gnus-group-mail-1 :foreground base5)
+    (gnus-group-news-low-empty   :inherit 'gnus-group-news-low :weight 'normal)
+    (gnus-header-content         :inherit 'message-header-other)
+    (gnus-header-from            :inherit 'message-header-other)
+    (gnus-header-name            :inherit 'message-header-name)
+    (gnus-header-newsgroups      :inherit 'message-header-other)
+    (gnus-header-subject         :inherit 'message-header-subject)
+    (gnus-summary-cancelled      :foreground red :strike-through t)
+    (gnus-summary-high-ancient   :foreground (doom-lighten base5 0.2) :inherit 'italic)
+    (gnus-summary-high-read      :foreground (doom-lighten fg 0.2))
+    (gnus-summary-high-ticked    :foreground (doom-lighten magenta 0.2))
+    (gnus-summary-high-unread    :foreground (doom-lighten green 0.2))
+    (gnus-summary-low-ancient    :foreground (doom-darken base5 0.2) :inherit 'italic)
+    (gnus-summary-low-read       :foreground (doom-darken fg 0.2))
+    (gnus-summary-low-ticked     :foreground (doom-darken magenta 0.2))
+    (gnus-summary-low-unread     :foreground (doom-darken green 0.2))
+    (gnus-summary-normal-ancient :foreground base5 :inherit 'italic)
+    (gnus-summary-normal-read    :foreground fg)
+    (gnus-summary-normal-ticked  :foreground magenta)
+    (gnus-summary-normal-unread  :foreground green :inherit 'bold)
+    (gnus-summary-selected       :foreground blue :weight 'bold)
+    (gnus-cite-1                 :foreground violet)
+    (gnus-cite-2                 :foreground violet)
+    (gnus-cite-3                 :foreground violet)
+    (gnus-cite-4                 :foreground green)
+    (gnus-cite-5                 :foreground green)
+    (gnus-cite-6                 :foreground green)
+    (gnus-cite-7                 :foreground magenta)
+    (gnus-cite-8                 :foreground magenta)
+    (gnus-cite-9                 :foreground magenta)
+    (gnus-cite-10                :foreground yellow)
+    (gnus-cite-11                :foreground yellow)
+    (gnus-signature              :foreground yellow)
+    (gnus-x-face                 :background base5 :foreground fg)
+
+    ;; helm
+    (helm-selection
+     (&all :inherit 'bold :background selection)
+     (&dark  :distant-foreground highlight)
+     (&light :distant-foreground base0))
+    (helm-match :foreground highlight :distant-foreground base8 :underline t)
+    (helm-source-header          :background base2 :foreground base5)
+    (helm-swoop-target-line-face :foreground highlight :inverse-video t)
+    (helm-visible-mark           :inherit '(bold highlight))
+    (helm-ff-file                :foreground fg)
+    (helm-ff-prefix              :foreground keywords)
+    (helm-ff-dotted-directory    :foreground grey)
+    (helm-ff-directory           :foreground variables)
+    (helm-ff-executable          :foreground base8 :inherit 'italic)
+    (helm-grep-match             :foreground highlight :distant-foreground red)
+    (helm-grep-file              :foreground methods)
+    (helm-grep-lineno            :foreground base5)
+    (helm-grep-finish            :foreground green)
+    (helm-swoop-target-line-face       :foreground highlight :inverse-video t)
+    (helm-swoop-target-line-block-face :foreground yellow)
+    (helm-swoop-target-word-face       :foreground green :inherit 'bold)
+    (helm-swoop-target-number-face     :foreground base5)
+
+    ;; helpful
+    (helpful-heading :weight 'bold :height 1.2)
+
+    ;; hideshow
+    (+doom-folded-face :inherit 'font-lock-comment-face
+                       :weight 'light
+                       :background (doom-darken bg 0.125))
+
+    ;; highlight-indentation-mode
+    (highlight-indentation-face                :inherit 'hl-line)
+    (highlight-indentation-current-column-face :background base1)
+    (highlight-indentation-guides-odd-face     :inherit 'highlight-indentation-face)
+    (highlight-indentation-guides-even-face    :inherit 'highlight-indentation-face)
+
+    ;; highlight-quoted-mode
+    (highlight-quoted-symbol :foreground type)
+    (highlight-quoted-quote  :foreground operators)
+
+    ;; highlight-numbers-mode
+    (highlight-numbers-number :inherit 'bold :foreground numbers)
+
+    ;; hlinum
+    (linum-highlight-face :foreground fg :distant-foreground nil :weight 'normal)
+
+    ;; hl-todo
+    (hl-todo :foreground red :weight 'bold)
+
+    ;; hydra
+    (hydra-face-red      :foreground red     :weight 'bold)
+    (hydra-face-blue     :foreground blue    :weight 'bold)
+    (hydra-face-amaranth :foreground magenta :weight 'bold)
+    (hydra-face-pink     :foreground violet  :weight 'bold)
+    (hydra-face-teal     :foreground teal    :weight 'bold)
+
+    ;; iedit
+    (iedit-occurrence :foreground magenta :weight 'bold :inverse-video t)
+    (iedit-read-only-occurrence :inherit 'region)
+
+    ;; imenu-list
+    ;; (imenu-list-entry-face)
+    (imenu-list-entry-face-0 :foreground highlight)
+    (imenu-list-entry-subalist-face-0 :inherit 'imenu-list-entry-face-0 :weight 'bold)
+    (imenu-list-entry-face-1 :foreground green)
+    (imenu-list-entry-subalist-face-1 :inherit 'imenu-list-entry-face-1 :weight 'bold)
+    (imenu-list-entry-face-2 :foreground yellow)
+    (imenu-list-entry-subalist-face-2 :inherit 'imenu-list-entry-face-2 :weight 'bold)
+
+    ;; indent-guide
+    ((indent-guide-face &inherit highlight-indentation-face))
+
+    ;; ivy
+    (ivy-current-match :background region :distant-foreground nil)
+    (ivy-minibuffer-match-face-1
+     :background nil
+     :foreground (doom-lighten grey 0.14)
+     :weight 'light)
+    (ivy-minibuffer-match-face-2
+     :inherit 'ivy-minibuffer-match-face-1
+     :foreground magenta :background base1 :weight 'semi-bold)
+    (ivy-minibuffer-match-face-3
+     :inherit 'ivy-minibuffer-match-face-2
+     :foreground green :weight 'semi-bold)
+    (ivy-minibuffer-match-face-4
+     :inherit 'ivy-minibuffer-match-face-2
+     :foreground yellow :weight 'semi-bold)
+    (ivy-minibuffer-match-highlight :foreground violet)
+    (ivy-highlight-face :foreground violet)
+    (ivy-confirm-face :foreground success)
+    (ivy-match-required-face :foreground error)
+    (ivy-virtual :inherit 'italic :foreground doc-comments)
+    (ivy-modified-buffer :inherit 'bold :foreground vc-modified)
+
+    ;; ivy-posframe
+    (ivy-posframe :background (doom-darken bg-alt 0.2))
+
+    ;; jabber
+    (jabber-activity-face          :foreground red   :weight 'bold)
+    (jabber-activity-personal-face :foreground blue  :weight 'bold)
+    (jabber-chat-error             :foreground red   :weight 'bold)
+    (jabber-chat-prompt-foreign    :foreground red   :weight 'bold)
+    (jabber-chat-prompt-local      :foreground blue  :weight 'bold)
+    (jabber-chat-prompt-system     :foreground green :weight 'bold)
+    (jabber-chat-text-foreign      :foreground fg)
+    (jabber-chat-text-local        :foreground fg)
+    (jabber-rare-time-face         :foreground green)
+    (jabber-roster-user-away       :foreground yellow)
+    (jabber-roster-user-chatty     :foreground green :weight 'bold)
+    (jabber-roster-user-dnd        :foreground red)
+    (jabber-roster-user-error      :foreground red)
+    (jabber-roster-user-offline    :foreground fg)
+    (jabber-roster-user-online     :foreground green :weight 'bold)
+    (jabber-roster-user-xa         :foreground cyan)
+
+    ;; linum-relative
+    ((linum-relative-current-face &inherit line-number-current-line))
+
+    ;; lui
+    (lui-time-stamp-face :foreground violet)
+    (lui-highlight-face :foreground highlight)
+    (lui-button-face :foreground builtin :underline t)
+
+    ;; multiple cursors
+    (mc/cursor-face :inherit 'cursor)
+
+    ;; nav-flash
+    (nav-flash-face :background selection :foreground base8 :weight 'bold)
+
+    ;; neotree
+    (neo-root-dir-face   :foreground strings :background bg :box `(:line-width 4 :color ,bg))
+    (neo-file-link-face  :foreground fg)
+    (neo-dir-link-face   :foreground highlight)
+    (neo-expand-btn-face :foreground highlight)
+    (neo-vc-edited-face  :foreground yellow)
+    (neo-vc-added-face   :foreground green)
+    (neo-vc-removed-face :foreground red :strike-through t)
+    (neo-vc-conflict-face :foreground magenta :weight 'bold)
+    (neo-vc-ignored-face  :foreground comments)
+    (doom-neotree-dir-face :foreground highlight)
+    (doom-neotree-file-face :foreground base8)
+    (doom-neotree-hidden-file-face :foreground comments)
+    (doom-neotree-text-file-face :foreground fg)
+    (doom-neotree-data-file-face :foreground violet)
+    (doom-neotree-media-file-face :inherit 'doom-neotree-hidden-file-face)
+
+    ;; nlinum
+    ((nlinum-current-line &inherit line-number-current-line))
+
+    ;; nlinum-hl
+    ((nlinum-hl-face &inherit line-number-current-line))
+
+    ;; nlinum-relative
+    ((nlinum-relative-current-face &inherit line-number-current-line))
+
+    ;; lsp
+    ;; TODO Add light versions
+    (lsp-face-highlight-textual :background dark-blue :foreground base8 :distant-foreground base0 :weight 'bold)
+    (lsp-face-highlight-read    :background dark-blue :foreground base8 :distant-foreground base0 :weight 'bold)
+    (lsp-face-highlight-write   :background dark-blue :foreground base8 :distant-foreground base0 :weight 'bold)
+    (lsp-ui-peek-filename :inherit 'doom-modeline-buffer-file)
+    (lsp-ui-peek-header :foreground fg :background (doom-lighten bg 0.1) :bold bold)
+    (lsp-ui-peek-selection :foreground bg :background blue :bold bold)
+    (lsp-ui-peek-list :background (doom-darken bg 0.1))
+    (lsp-ui-peek-peek :background (doom-darken bg 0.1))
+    (lsp-ui-peek-highlight :inherit 'lsp-ui-peek-header :background region :foreground bg :box t)
+    (lsp-ui-peek-line-number :foreground success)
+
+    ;; magit
+    (magit-bisect-bad        :foreground red)
+    (magit-bisect-good       :foreground green)
+    (magit-bisect-skip       :foreground orange)
+    (magit-blame-date        :foreground red)
+    (magit-blame-heading     :foreground orange :background base3)
+    (magit-branch-current    :foreground blue)
+    (magit-branch-local      :foreground cyan)
+    (magit-branch-remote     :foreground green)
+    (magit-cherry-equivalent :foreground violet)
+    (magit-cherry-unmatched  :foreground cyan)
+    (magit-diff-added             :foreground (doom-darken green 0.2)  :background (doom-blend green bg 0.1))
+    (magit-diff-added-highlight   :foreground green                    :background (doom-blend green bg 0.2) :weight 'bold)
+    (magit-diff-base              :foreground (doom-darken orange 0.2) :background (doom-blend orange bg 0.1))
+    (magit-diff-base-highlight    :foreground orange                   :background (doom-blend orange bg 0.2) :weight 'bold)
+    (magit-diff-context           :foreground (doom-darken fg 0.4) :background bg)
+    (magit-diff-context-highlight :foreground fg                   :background bg-alt)
+    (magit-diff-file-heading           :foreground fg :weight 'bold)
+    (magit-diff-file-heading-selection :foreground magenta               :background dark-blue :weight 'bold)
+    (magit-diff-hunk-heading           :foreground bg                    :background (doom-blend violet bg 0.3))
+    (magit-diff-hunk-heading-highlight :foreground bg                    :background violet :weight 'bold)
+    (magit-diff-removed                :foreground (doom-darken red 0.2) :background (doom-blend red base3 0.1))
+    (magit-diff-removed-highlight      :foreground red                   :background (doom-blend red base3 0.2) :weight 'bold)
+    (magit-diff-lines-heading          :foreground yellow     :background red)
+    (magit-diffstat-added              :foreground green)
+    (magit-diffstat-removed            :foreground red)
+    (magit-dimmed :foreground comments)
+    (magit-hash :foreground comments)
+    (magit-header-line :background dark-blue :foreground base8 :weight 'bold
+                       :box `(:line-width 3 :color ,dark-blue))
+    (magit-log-author :foreground orange)
+    (magit-log-date :foreground blue)
+    (magit-log-graph :foreground comments)
+    (magit-process-ng :inherit 'error)
+    (magit-process-ok :inherit 'success)
+    (magit-reflog-amend :foreground magenta)
+    (magit-reflog-checkout :foreground blue)
+    (magit-reflog-cherry-pick :foreground green)
+    (magit-reflog-commit :foreground green)
+    (magit-reflog-merge :foreground green)
+    (magit-reflog-other :foreground cyan)
+    (magit-reflog-rebase :foreground magenta)
+    (magit-reflog-remote :foreground cyan)
+    (magit-reflog-reset :inherit 'error)
+    (magit-refname :foreground comments)
+    (magit-section-heading           :foreground blue :weight 'bold)
+    (magit-section-heading-selection :foreground orange :weight 'bold)
+    (magit-section-highlight :inherit 'hl-line)
+    (magit-sequence-drop :foreground red)
+    (magit-sequence-head :foreground blue)
+    (magit-sequence-part :foreground orange)
+    (magit-sequence-stop :foreground green)
+    (magit-signature-bad :inherit 'error)
+    (magit-signature-error :inherit 'error)
+    (magit-signature-expired :foreground orange)
+    (magit-signature-good :inherit 'success)
+    (magit-signature-revoked :foreground magenta)
+    (magit-signature-untrusted :foreground yellow)
+    (magit-tag :foreground yellow)
+    (magit-filename :foreground violet)
+    (magit-section-secondary-heading :foreground violet :weight 'bold)
+
+    ;; mic-paren
+    (paren-face-match    :foreground red   :background base0 :weight 'ultra-bold)
+    (paren-face-mismatch :foreground base0 :background red   :weight 'ultra-bold)
+    (paren-face-no-match :inherit 'paren-face-mismatch :weight 'ultra-bold)
+
+    ;; parenface
+    (paren-face :foreground comments)
+
+    ;; perspective
+    (persp-selected-face :foreground blue :weight 'bold)
+
+    ;; persp-mode
+    (persp-face-lighter-buffer-not-in-persp :foreground warning :slant 'italic)
+    (persp-face-lighter-nil-persp :foreground comments)
+
+    ;; popup
+    (popup-face :inherit 'tooltip)
+    (popup-tip-face :inherit 'popup-face :foreground violet :background base0)
+    (popup-selection-face :background selection)
+
+    ;; rainbow-delimiters
+    (rainbow-delimiters-depth-1-face :foreground blue)
+    (rainbow-delimiters-depth-2-face :foreground magenta)
+    (rainbow-delimiters-depth-3-face :foreground green)
+    (rainbow-delimiters-depth-4-face :foreground orange)
+    (rainbow-delimiters-depth-5-face :foreground violet)
+    (rainbow-delimiters-depth-6-face :foreground yellow)
+    (rainbow-delimiters-depth-7-face :foreground teal)
+    (rainbow-delimiters-unmatched-face  :foreground red :weight 'bold :inverse-video t)
+    (rainbow-delimiters-mismatched-face :inherit 'rainbow-delimiters-unmatched-face)
+
+    ;; re-builder
+    (reb-match-0 :foreground orange  :inverse-video t)
+    (reb-match-1 :foreground magenta :inverse-video t)
+    (reb-match-2 :foreground green   :inverse-video t)
+    (reb-match-3 :foreground yellow  :inverse-video t)
+
+    ;; show-paren
+    ((show-paren-match &inherit paren-face-match))
+    ((show-paren-mismatch &inherit paren-face-mismatch))
+
+    ;; smartparens
+    (sp-pair-overlay-face :background region)
+
+    ;; smartparens
+    ((sp-show-pair-match-face    &inherit show-paren-match))
+    ((sp-show-pair-mismatch-face &inherit show-paren-mismatch))
+
+    ;; smerge-tool
+    (smerge-lower :background (doom-blend green bg 0.2))
+    (smerge-upper :background (doom-blend red base3 0.2))
+    (smerge-base  :background (doom-blend blue bg 0.2))
+    (smerge-markers :background comments :foreground bg :distant-foreground fg :weight 'bold)
+    ;; Emacs <25 compatibility
+    ((smerge-mine  &inherit smerge-upper))
+    ((smerge-other &inherit smerge-lower))
+
+    ;; solaire-mode
+    (solaire-default-face  :inherit 'default :background bg-alt)
+    (solaire-hl-line-face  :inherit 'hl-line :background bg)
+    (solaire-org-hide-face :foreground bg-alt)
+
+    ;; stripe-buffer
+    (stripe-highlight
+     (&light :background base5)
+     (&dark  :background base3))
+
+    ;; swiper
+    (swiper-line-face    :background blue    :foreground base0)
+    (swiper-match-face-1 :inherit 'unspecified :background base0   :foreground base5)
+    (swiper-match-face-2 :inherit 'unspecified :background orange  :foreground base0 :weight 'bold)
+    (swiper-match-face-3 :inherit 'unspecified :background magenta :foreground base0 :weight 'bold)
+    (swiper-match-face-4 :inherit 'unspecified :background green   :foreground base0 :weight 'bold)
+
+    ;; tabbar
+    (tabbar-default             :foreground bg :background bg :height 1.0)
+    (tabbar-highlight           :foreground fg :background selection :distant-foreground bg)
+    (tabbar-button              :foreground fg :background bg)
+    (tabbar-button-highlight    :inherit 'tabbar-button :inverse-video t)
+    (tabbar-modified            :inherit 'tabbar-default :foreground red :weight 'bold)
+    (tabbar-unselected          :inherit 'tabbar-default :foreground base5)
+    (tabbar-unselected-modified :inherit 'tabbar-modified)
+    (tabbar-selected
+     :inherit 'tabbar-default :weight 'bold
+     :foreground fg :background bg-alt)
+    (tabbar-selected-modified :inherit 'tabbar-selected :foreground green)
+
+    ;; tldr
+    (tldr-command-itself   :foreground bg :background green :weight 'semi-bold)
+    (tldr-title            :foreground yellow :bold t :height 1.4)
+    (tldr-description      :foreground fg :weight 'semi-bold)
+    (tldr-introduction     :foreground (doom-blend blue bg 0.8) :weight 'semi-bold)
+    (tldr-code-block       :foreground green :background region :weight 'semi-bold)
+    (tldr-command-argument :foreground fg :background region )
+
+    ;; treemacs
+    (treemacs-root-face :inherit 'font-lock-string-face :weight 'bold :height 1.2)
+    (treemacs-file-face :foreground fg)
+    (treemacs-directory-face :foreground fg)
+    (treemacs-tags-face :foreground highlight)
+    (treemacs-git-modified-face :foreground violet)
+    (treemacs-git-added-face :foreground green)
+    (treemacs-git-conflict-face :foreground red)
+    (treemacs-git-untracked-face :inherit 'font-lock-doc-face)
+
+    ;; twittering-mode
+    (twitter-divider  ; custom face in Doom Emacs
+     (&light :underline '(:color (doom-lighten vertical-bar 0.2)))
+     (&dark  :underline '(:color (doom-darken vertical-bar 0.2))))
+
+    ;; undo-tree
+    (undo-tree-visualizer-default-face :foreground base5)
+    (undo-tree-visualizer-current-face :foreground green :weight 'bold)
+    (undo-tree-visualizer-unmodified-face :foreground base5)
+    (undo-tree-visualizer-active-branch-face :foreground blue)
+    (undo-tree-visualizer-register-face :foreground yellow)
+
+    ;; vimish-fold
+    (vimish-fold-overlay :inherit 'font-lock-comment-face :background base0 :weight 'light)
+    (vimish-fold-fringe  :foreground magenta)
+
+    ;; volatile-highlights
+    (vhl/default-face :background grey)
+
+    ;; wgrep
+    (wgrep-face :weight 'bold :foreground green :background base5)
+    (wgrep-delete-face :foreground base3 :background red)
+    (wgrep-done-face   :foreground blue)
+    (wgrep-file-face   :foreground comments)
+    (wgrep-reject-face :foreground red :weight 'bold)
+
+    ;; which-func
+    (which-func :foreground blue)
+
+    ;; which-key
+    (which-key-key-face                   :foreground green)
+    (which-key-group-description-face     :foreground violet)
+    (which-key-command-description-face   :foreground blue)
+    (which-key-local-map-description-face :foreground magenta)
+
+    ;; whitespace
+    (whitespace-empty    :background base3)
+    (whitespace-space    :foreground base4)
+    (whitespace-tab      :foreground base4 :background (unless indent-tabs-mode base3))
+    (whitespace-newline  :foreground base4)
+    (whitespace-indentation :foreground red :background yellow)
+    (whitespace-trailing :inherit 'trailing-whitespace)
+    (whitespace-line     :background base0 :foreground red :weight 'bold)
+
+    ;; workgroups2
+    (wg-current-workgroup-face :foreground base0 :background highlight)
+    (wg-other-workgroup-face   :foreground base5)
+    (wg-divider-face           :foreground grey)
+    (wg-brace-face             :foreground highlight)
+
+    ;; yasnippet
+    (yas-field-highlight-face :inherit 'match)
+
+
+    ;; --- major-mode faces -------------------
+    ;; auctex (latex-mode)
+    (font-latex-bold-face         :inherit 'bold)
+    (font-latex-italic-face       :inherit 'italic)
+    (font-latex-math-face         :foreground blue)
+    (font-latex-sectioning-0-face :foreground blue    :weight 'ultra-bold :height 1.4)
+    (font-latex-sectioning-1-face :foreground magenta :weight 'semi-bold  :height 1.2)
+    (font-latex-sectioning-2-face :foreground violet  :weight 'semi-bold)
+    (font-latex-sectioning-3-face :foreground (doom-lighten blue 0.3)    :weight 'semi-bold)
+    (font-latex-sectioning-4-face :foreground (doom-lighten magenta 0.3) :weight 'semi-bold)
+    (font-latex-sectioning-5-face :foreground (doom-lighten violet 0.3)  :weight 'semi-bold)
+    (font-latex-script-char-face  :foreground dark-blue)
+    (font-latex-string-face       :inherit 'font-lock-string-face)
+    (font-latex-warning-face      :inherit 'font-lock-warning-face)
+    (font-latex-verbatim-face     :inherit 'fixed-pitch :foreground violet :slant 'italic)
+
+    ;; elixir-mode
+    (elixir-atom-face (&light :foreground dark-blue)
+                      (&dark  :foreground cyan))
+    (elixir-attribute-face :foreground violet)
+
+    ;; enh-ruby-mode
+    (enh-ruby-op-face :foreground operators)
+    (enh-ruby-string-delimiter-face  :inherit 'font-lock-string-face)
+    (enh-ruby-heredoc-delimiter-face :inherit 'font-lock-string-face)
+    (enh-ruby-regexp-face :foreground constants)
+    (enh-ruby-regexp-delimiter-face  :inherit 'enh-ruby-regexp-face)
+    (erm-syn-errline  :underline `(:style wave :color ,error))
+    (erm-syn-warnline :underline `(:style wave :color ,warning))
+
+    ;; jdee-mode
+    (jdee-font-lock-number-face :foreground numbers)
+    (jdee-font-lock-operator-face :foreground operators)
+    (jdee-font-lock-constant-face :inherit 'font-lock-constant-face)
+    (jdee-font-lock-constructor-face :foreground methods)
+    (jdee-font-lock-public-face :inherit 'font-lock-keyword-face)
+    (jdee-font-lock-protected-face :inherit 'font-lock-keyword-face)
+    (jdee-font-lock-private-face :inherit 'font-lock-keyword-face)
+    (jdee-font-lock-modifier-face :inherit 'font-lock-type-face)
+    (jdee-font-lock-doc-tag-face :foreground violet)
+    (jdee-font-lock-italic-face :inherit 'italic)
+    (jdee-font-lock-bold-face :inherit 'bold)
+    (jdee-font-lock-link-face :foreground blue :italic nil :underline t)
+
+    ;; js2-mode
+    (js2-function-param  :foreground variables)
+    (js2-function-call   :foreground functions)
+    (js2-object-property :foreground violet)
+    (js2-jsdoc-tag       :foreground doc-comments)
+
+    ;; ledger-mode
+    (ledger-font-posting-date-face :foreground blue)
+    (ledger-font-posting-amount-face :foreground yellow)
+    (ledger-font-posting-account-face :foreground base8)
+    (ledger-font-payee-cleared-face :foreground violet :weight 'bold :height 1.2)
+    (ledger-font-payee-uncleared-face :foreground base5 :weight 'bold :height 1.2)
+    (ledger-font-xact-highlight-face :background base0)
+
+    ;; makefile-*-mode
+    (makefile-targets :foreground blue)
+
+    ;; markdown-mode
+    (markdown-header-face           :inherit 'bold :foreground highlight)
+    (markdown-header-delimiter-face :inherit 'markdown-header-face)
+    (markdown-metadata-key-face     :foreground red)
+    (markdown-list-face             :foreground red)
+    (markdown-link-face             :inherit 'bold :foreground blue)
+    (markdown-url-face              :foreground magenta :weight 'normal)
+    (markdown-italic-face           :inherit 'italic :foreground violet)
+    (markdown-bold-face             :inherit 'bold   :foreground orange)
+    (markdown-markup-face           :foreground operators)
+    (markdown-blockquote-face       :inherit 'italic :foreground doc-comments)
+    (markdown-pre-face              :foreground strings)
+    (markdown-code-face :background base3)
+    (markdown-inline-code-face :inherit '(markdown-code-face markdown-pre-face))
+
+    ;; notmuch
+    ;; (notmuch-crypto-decryption               :foreground blue-l)
+    ;; (notmuch-crypto-part-header              :foreground yellow-l)
+    ;; (notmuch-crypto-signature-bad            :foreground red-l)
+    ;; (notmuch-crypto-signature-good           :foreground base1)
+    ;; (notmuch-crypto-signature-good-key       :foreground aqua-l)
+    ;; (notmuch-crypto-signature-unknown        :foreground yellow)
+    ;; (notmuch-hello-logo-background           :foreground fg)
+    (notmuch-message-summary-face            :foreground grey :background nil)
+    (notmuch-search-count                    :foreground comments)
+    (notmuch-search-date                     :foreground numbers :weight 'bold)
+    (notmuch-search-flagged-face             :foreground (doom-blend red base4 0.5))
+    (notmuch-search-matching-authors         :foreground blue :weight 'bold)
+    (notmuch-search-non-matching-authors     :foreground blue)
+    (notmuch-search-subject                  :foreground fg)
+    (notmuch-search-unread-face              :foreground base8)
+    (notmuch-tag-added                       :foreground green :weight 'normal)
+    (notmuch-tag-deleted                     :foreground red :weight 'normal)
+    (notmuch-tag-face                        :foreground yellow :weight 'normal)
+    (notmuch-tag-flagged                     :foreground yellow :weight 'normal)
+    (notmuch-tag-unread                      :foreground yellow :weight 'normal)
+    (notmuch-tree-match-author-face          :foreground blue :weight 'bold)
+    (notmuch-tree-match-date-face            :foreground numbers :weight 'bold)
+    (notmuch-tree-match-face                 :foreground fg)
+    (notmuch-tree-match-subject-face         :foreground fg)
+    (notmuch-tree-match-tag-face             :foreground yellow)
+    (notmuch-tree-match-tree-face            :foreground comments)
+    (notmuch-tree-no-match-author-face       :foreground blue)
+    (notmuch-tree-no-match-date-face         :foreground numbers)
+    (notmuch-tree-no-match-face              :foreground base5)
+    (notmuch-tree-no-match-subject-face      :foreground base5)
+    (notmuch-tree-no-match-tag-face          :foreground yellow)
+    (notmuch-tree-no-match-tree-face         :foreground yellow)
+    (notmuch-wash-cited-text                 :foreground base4)
+    (notmuch-wash-toggle-button :foreground fg)
+
+    ;; outline
+    (outline-1 :inherit 'org-level-1)
+    (outline-2 :inherit 'org-level-2)
+    (outline-3 :inherit 'org-level-3)
+    (outline-4 :inherit 'org-level-4)
+    (outline-5 :inherit 'org-level-5)
+    (outline-6 :inherit 'org-level-6)
+    (outline-7 :inherit 'org-level-7)
+    (outline-8 :inherit 'org-level-8)
+
+    ;; org-mode
+    (org-archived                 :foreground doc-comments)
+    (org-block                    :background base3)
+    (org-block-background         :background base3)
+    (org-block-begin-line         :foreground comments :background base3)
+    (org-block-end-line           :inherit 'org-block-begin-line)
+    (org-checkbox                 :inherit 'org-todo)
+    (org-checkbox-statistics-done :inherit 'org-done)
+    (org-checkbox-statistics-todo :inherit 'org-todo)
+    (org-code                     :foreground orange)
+    (org-date                     :foreground yellow)
+    (org-default                  :inherit 'variable-pitch)
+    (org-document-info            :foreground builtin)
+    (org-document-title           :foreground builtin :weight 'bold)
+    (org-done                     :inherit 'org-headline-done :bold 'inherit)
+    (org-ellipsis                 :underline nil :background nil :foreground grey)
+    (org-footnote                 :foreground orange)
+    (org-formula                  :foreground cyan)
+    (org-headline-done            :foreground base5)
+    (org-hide                     :foreground bg)
+
+    (org-level-1 :foreground blue     :background base3 :weight 'ultra-bold :height 1.25)
+    (org-level-2 :foreground magenta  :weight 'semi-bold)
+    (org-level-3 :foreground violet   :weight 'semi-bold)
+    (org-level-4 :foreground (doom-lighten blue 0.25)    :weight 'semi-bold)
+    (org-level-5 :foreground (doom-lighten magenta 0.25) :weight 'semi-bold)
+    (org-level-6 :foreground (doom-lighten blue 0.5)  :weight 'semi-bold)
+    (org-level-7 :foreground (doom-lighten magenta 0.5)    :weight 'semi-bold)
+    (org-level-8 :foreground (doom-lighten blue 0.8) :weight 'semi-bold)
+
+    (org-list-dt         :foreground highlight)
+    (org-meta-line       :foreground doc-comments)
+    (org-priority        :foreground red)
+    (org-property-value  :foreground doc-comments)
+    (org-quote           :background base3 :slant 'italic)
+    (org-special-keyword :foreground doc-comments)
+    (org-table           :foreground violet)
+    (org-tag             :foreground doc-comments :weight 'normal)
+    (org-ref-cite-face   :foreground yellow :weight 'light :underline t)
+    (org-todo            :foreground highlight :bold 'inherit)
+    (org-verbatim        :foreground green)
+    (org-warning         :foreground warning)
+
+    ;; org-agenda
+    (org-agenda-done :inherit 'org-done)
+    (org-agenda-dimmed-todo-face :foreground comments)
+    (org-agenda-date          :foreground violet :weight 'ultra-bold)
+    (org-agenda-date-today    :foreground (doom-lighten violet 0.4)   :weight 'ultra-bold)
+    (org-agenda-date-weekend  :foreground (doom-darken violet 0.4)  :weight 'ultra-bold)
+    (org-agenda-structure     :foreground fg :weight 'ultra-bold)
+    (org-agenda-clocking      :background (doom-blend blue bg 0.2))
+    (org-upcoming-deadline         :foreground (doom-blend fg bg 0.8))
+    (org-upcoming-distant-deadline :foreground (doom-blend fg bg 0.5))
+    (org-scheduled            :foreground fg)
+    (org-scheduled-today      :foreground base7)
+    (org-scheduled-previously :foreground base8)
+    (org-time-grid            :foreground comments)
+    (org-sexp-date            :foreground fg)
+
+    ;; org-habit
+    (org-habit-clear-face          :weight 'bold :background bg-alt :foreground bg-alt)
+    (org-habit-clear-future-face   :weight 'bold :background bg-alt :foreground bg-alt)
+    (org-habit-ready-face          :weight 'bold :background (doom-blend blue bg-alt 0.5)   :foreground (doom-blend blue bg-alt 0.5))
+    (org-habit-ready-future-face   :weight 'bold :background (doom-blend blue bg-alt 0.5)   :foreground (doom-blend blue bg-alt 0.5))
+    (org-habit-alert-face          :weight 'bold :background (doom-blend yellow bg-alt 0.5) :foreground (doom-blend yellow bg-alt 0.5))
+    (org-habit-alert-future-face   :weight 'bold :background (doom-blend yellow bg-alt 0.5) :foreground (doom-blend yellow bg-alt 0.5))
+    (org-habit-overdue-face        :weight 'bold :background (doom-blend red bg-alt 0.5)    :foreground (doom-blend red bg-alt 0.5))
+    (org-habit-overdue-future-face :weight 'bold :background (doom-blend red bg-alt 0.5)    :foreground (doom-blend red bg-alt 0.5))
+
+    ;; rpm-spec-mode
+    (rpm-spec-macro-face        :foreground yellow)
+    (rpm-spec-var-face          :foreground violet)
+    (rpm-spec-tag-face          :foreground blue)
+    (rpm-spec-obsolete-tag-face :foreground red)
+    (rpm-spec-package-face      :foreground orange)
+    (rpm-spec-dir-face          :foreground green)
+    (rpm-spec-doc-face          :foreground orange)
+    (rpm-spec-ghost-face        :foreground comments)
+    (rpm-spec-section-face      :foreground magenta)
+
+    ;; typescript-mode
+    (typescript-jsdoc-tag :foreground doc-comments)
+    (typescript-jsdoc-type :foreground (doom-darken doc-comments 0.15))
+    (typescript-jsdoc-value :foreground (doom-lighten doc-comments 0.15))
+
+    ;; sh-mode
+    (sh-heredoc :inherit 'font-lock-string-face :weight 'normal)
+    (sh-quoted-exec :inherit 'font-lock-preprocessor-face)
+
+    ;; web-mode
+    (web-mode-doctype-face           :foreground comments)
+    (web-mode-html-tag-face          :foreground methods)
+    (web-mode-html-tag-bracket-face  :foreground methods)
+    (web-mode-html-attr-name-face    :foreground type)
+    (web-mode-html-entity-face       :foreground cyan :inherit 'italic)
+    (web-mode-block-control-face     :foreground orange)
+    (web-mode-html-tag-bracket-face  :foreground operators))
+  "TODO")
+
+(defvar doom-themes-common-vars
+  '((ansi-color-names-vector
+     (vconcat (mapcar #'doom-color '(base0 red green yellow blue magenta cyan base8))))
+
+    (fci-rule-color (doom-color 'base5))
+
+    (jdee-db-spec-breakpoint-face-colors `(cons ,(doom-color 'base0) ,(doom-color 'grey)))
+    (jdee-db-requested-breakpoint-face-colors `(cons ,(doom-color 'base0) ,(doom-color 'green)))
+    (jdee-db-active-breakpoint-face-colors `(cons ,(doom-color 'base0) ,(doom-color 'highlight)))
+
+    (vc-annotate-color-map
+     `(list (cons 20  ,(doom-color 'green))
+            (cons 40  ,(doom-blend 'yellow 'green (/ 1.0 3)))
+            (cons 60  ,(doom-blend 'yellow 'green (/ 2.0 3)))
+            (cons 80  ,(doom-color 'yellow))
+            (cons 100 ,(doom-blend 'orange 'yellow (/ 1.0 3)))
+            (cons 120 ,(doom-blend 'orange 'yellow (/ 2.0 3)))
+            (cons 140 ,(doom-color 'orange))
+            (cons 160 ,(doom-blend 'magenta 'orange (/ 1.0 3)))
+            (cons 180 ,(doom-blend 'magenta 'orange (/ 2.0 3)))
+            (cons 200 ,(doom-color 'magenta))
+            (cons 220 ,(doom-blend 'red 'magenta (/ 1.0 3)))
+            (cons 240 ,(doom-blend 'red 'magenta (/ 2.0 3)))
+            (cons 260 ,(doom-color 'red))
+            (cons 280 ,(doom-blend 'grey 'red (/ 1.0 4)))
+            (cons 300 ,(doom-blend 'grey 'red (/ 2.0 4)))
+            (cons 320 ,(doom-blend 'grey 'red (/ 3.0 4)))
+            (cons 340 ,(doom-color 'base5))
+            (cons 360 ,(doom-color 'base5))))
+    (vc-annotate-very-old-color nil)
+    (vc-annotate-background (doom-color 'bg)))
+  "TODO")
+
+
+;;
+;; Library
+;;
+
+(defvar doom-themes--colors)
+(defvar doom--min-colors '(257 256 16))
+(defvar doom--quoted-p nil)
+(defvar doom-themes--faces nil)
+
+(defun doom-themes--colors-p (item)
+  (declare (pure t) (side-effect-free t))
+  (when item
+    (cond ((listp item)
+           (let ((car (car item)))
+             (cond ((memq car '(quote doom-color)) nil)
+
+                   ((memq car '(backquote \`))
+                    (let ((doom--quoted-p t))
+                      (doom-themes--colors-p (cdr item))))
+
+                   ((eq car '\,)
+                    (let (doom--quoted-p)
+                      (doom-themes--colors-p (cdr item))))
+
+                   ((or (doom-themes--colors-p car)
+                        (doom-themes--colors-p (cdr-safe item)))))))
+
+          ((and (symbolp item)
+                (not (keywordp item))
+                (not doom--quoted-p)
+                (not (equal (substring (symbol-name item) 0 1) "-"))
+                (assq item doom-themes--colors))))))
+
+(defun doom-themes--apply-faces (new-faces &optional default-faces)
+  (declare (pure t) (side-effect-free t))
+  (let ((default-faces (or default-faces doom-themes-common-faces))
+        (faces (make-hash-table :test #'eq :size (+ (length default-faces) (length new-faces))))
+        (directives (make-hash-table :test #'eq)))
+    (dolist (spec (append (mapcar #'copy-sequence default-faces) new-faces))
+      (if (listp (car spec))
+          (cl-destructuring-bind (face action &optional arg) (car spec)
+            (unless (assq face new-faces)
+              (puthash face (list action arg (cdr spec))
+                       directives)))
+        (puthash (car spec) (cdr spec) faces)))
+    (cl-loop for face being the hash-keys of directives
+             for (action target spec) = (gethash face directives)
+             unless (memq action '(&inherit &extend &override))
+             do (error "Invalid operation (%s) for '%s' face" action face)
+             if (eq (car spec) 'quote)
+             do (error "Can't extend literal face spec (for '%s')" face)
+             ;; TODO Add &all/&light/&dark extension support
+             else if (memq (car spec) '(&all &light &dark))
+             do (error "Can't extend face with &all, &light or &dark specs (for '%s')" face)
+             else do
+             (puthash face
+                      (let ((old-spec (gethash (or target face) faces))
+                            (plist spec))
+                        ;; remove duplicates
+                        (while (keywordp (car plist))
+                          (setq old-spec (plist-put old-spec (car plist) (cadr plist))
+                                plist (cddr plist)))
+                        old-spec)
+                      faces))
+    (let (results)
+      (maphash (lambda (face plist)
+                 (when (keywordp (car plist))
+                   ;; TODO Clean up duplicates in &all/&light/&dark blocks
+                   (dolist (prop (append (unless doom-themes-enable-bold   '(:weight normal :bold nil))
+                                         (unless doom-themes-enable-italic '(:slant normal :italic nil))))
+                     (when (and (plist-member plist prop)
+                                (not (eq (plist-get plist prop) 'inherit)))
+                       (plist-put plist prop
+                                  (if (memq prop '(:weight :slant))
+                                      (quote 'normal))))))
+                 (push (cons face plist) results))
+               faces)
+      (nreverse results))))
+
+(defun doom-themes--colorize (item type)
+  (declare (pure t) (side-effect-free t))
+  (when item
+    (let ((doom--quoted-p doom--quoted-p))
+      (cond ((listp item)
+             (cond ((memq (car item) '(quote doom-color))
+                    item)
+                   ((eq (car item) 'doom-ref)
+                    (doom-themes--colorize
+                     (apply #'doom-ref (cdr item)) type))
+                   ((let* ((item (append item nil))
+                           (car (car item))
+                           (doom--quoted-p
+                            (cond ((memq car '(backquote \`)) t)
+                                  ((eq car '\,) nil)
+                                  (t doom--quoted-p))))
+                      (cons car
+                            (cl-loop
+                             for i in (cdr item)
+                             collect (doom-themes--colorize i type)))))))
+
+            ((and (symbolp item)
+                  (not (keywordp item))
+                  (not doom--quoted-p)
+                  (not (equal (substring (symbol-name item) 0 1) "-"))
+                  (assq item doom-themes--colors))
+             `(doom-color ',item ',type))
+
+            (item)))))
+
+(defun doom-themes--build-face (face)
+  (declare (pure t) (side-effect-free t))
+  `(list
+    ',(car face)
+    ,(let ((face-body (cdr face)))
+       (cond ((keywordp (car face-body))
+              (let ((real-attrs face-body)
+                    defs)
+                (if (doom-themes--colors-p real-attrs)
+                    (dolist (cl doom--min-colors `(list ,@(nreverse defs)))
+                      (push `(list '((class color) (min-colors ,cl))
+                                   (list ,@(doom-themes--colorize real-attrs cl)))
+                            defs))
+                  `(list (list 't (list ,@real-attrs))))))
+
+             ((memq (car-safe (car face-body)) '(quote backquote \`))
+              (car face-body))
+
+             ((let (all-attrs defs)
+                (dolist (attrs face-body `(list ,@(nreverse defs)))
+                  (cond ((eq (car attrs) '&all)
+                         (setq all-attrs (append all-attrs (cdr attrs))))
+
+                        ((memq (car attrs) '(&dark &light))
+                         (let ((bg (if (eq (car attrs) '&dark) 'dark 'light))
+                               (real-attrs (append all-attrs (cdr attrs) '())))
+                           (cond ((doom-themes--colors-p real-attrs)
+                                  (dolist (cl doom--min-colors)
+                                    (push `(list '((class color) (min-colors ,cl) (background ,bg))
+                                                 (list ,@(doom-themes--colorize real-attrs cl)))
+                                          defs)))
+
+                                 ((push `(list '((background ,bg)) (list ,@real-attrs))
+                                        defs)))))))))))))
+
+
+;;
+;; Public functions
+;;
+
+(defun doom-themes-prepare-facelist (custom-faces)
+  "Return an alist of face definitions for `custom-theme-set-faces'.
+
+Faces in EXTRA-FACES override the default faces."
+  (declare (pure t) (side-effect-free t))
+  (setq doom-themes--faces (doom-themes--apply-faces custom-faces))
+  (mapcar #'doom-themes--build-face doom-themes--faces))
+
+(defun doom-themes-prepare-varlist (vars)
+  "Return an alist of variable definitions for `custom-theme-set-variables'.
+
+Variables in EXTRA-VARS override the default ones."
+  (declare (pure t) (side-effect-free t))
+  (cl-loop for (var val) in (append doom-themes-common-vars vars)
+           collect `(list ',var ,val)))
+
+(provide 'doom-themes-common)
+;;; doom-themes-common.el ends here