      (diredp-symlink                               :foreground base0E)
      (diredp-write-priv                            :foreground base0A :background nil)
 
-     ;; term and ansi-term
-     (term                                         :foreground base05 :background base00)
-     (term-color-black                             :foreground base02 :background base00)
-     (term-color-white                             :foreground base05 :background base07)
-     (term-color-red                               :foreground base08 :background base08)
-     (term-color-yellow                            :foreground base0A :background base0A)
-     (term-color-green                             :foreground base0B :background base0B)
-     (term-color-cyan                              :foreground base0C :background base0C)
-     (term-color-blue                              :foreground base0D :background base0D)
-     (term-color-magenta                           :foreground base0E :background base0E)
-
-     (link                                         :foreground nil :underline t)
-     (widget-button                                :underline t)
-     (widget-field                                 :background base03 :box (:line-width 1 :color base06))
-
-     ;; Compilation (most faces politely inherit from 'success, 'error, 'warning etc.)
-     (compilation-column-number                    :foreground base0A)
-     (compilation-line-number                      :foreground base0A)
-     (compilation-message-face                     :foreground base0D)
-     (compilation-mode-line-exit                   :foreground base0B)
-     (compilation-mode-line-fail                   :foreground base08)
-     (compilation-mode-line-run                    :foreground base0D)
-
-     ;; Grep
-     (grep-context-face                            :foreground base04)
-     (grep-error-face                              :foreground base08 :weight bold :underline t)
-     (grep-hit-face                                :foreground base0D)
-     (grep-match-face                              :foreground nil :background nil :inherit match)
-
-     (regex-tool-matched-face                      :foreground nil :background nil :inherit match)
-
-     ;; Cscope
-     (cscope-file-face                             :foreground base0B)
-     (cscope-function-face                         :foreground base0D)
-     (cscope-line-number-face                      :foreground base0A)
-     (cscope-mouse-face                            :foreground base04 :background base01)
-     (cscope-separator-face                        :foreground base08 :overline t :underline t :weight bold)
-
-     ;; mark-multiple
-     (mm/master-face                               :foreground nil :background nil :inherit region)
-     (mm/mirror-face                               :foreground nil :background nil :inherit region)
-
-     ;; org-mode
-     (org-agenda-structure                         :foreground base0E)
-     (org-agenda-date                              :foreground base0D :underline nil)
-     (org-agenda-done                              :foreground base0B)
-     (org-agenda-dimmed-todo-face                  :foreground base04)
-     (org-block                                    :foreground base09)
-     (org-code                                     :foreground base0A)
-     (org-column                                   :background base01)
-     (org-column-title                             :weight bold :underline t :inherit org-column)
-     (org-date                                     :foreground base0E :underline t)
-     (org-document-info                            :foreground base0C)
-     (org-document-info-keyword                    :foreground base0B)
-     (org-document-title                           :foreground base09 :weight bold :height 1.44)
-     (org-done                                     :foreground base0B)
-     (org-ellipsis                                 :foreground base04)
-     (org-footnote                                 :foreground base0C)
-     (org-formula                                  :foreground base08)
-     (org-hide                                     :foreground base03)
-     (org-link                                     :foreground base0D)
-     (org-scheduled                                :foreground base0B)
-     (org-scheduled-previously                     :foreground base09)
-     (org-scheduled-today                          :foreground base0B)
-     (org-special-keyword                          :foreground base09)
-     (org-table                                    :foreground base0E)
-     (org-todo                                     :foreground base08)
-     (org-upcoming-deadline                        :foreground base09)
-     (org-warning                                  :foreground base08 :weight bold)
-
-     (markdown-url-face                            :inherit link)
-     (markdown-link-face                           :foreground base0D :underline t)
-
-     (hl-sexp-face                                 :background base03)
-     (highlight-80+                                :background base03)
-
-     ;; Python-specific overrides
-     (py-builtins-face                             :foreground base09 :weight normal)
-
-     ;; js2-mode
-     (js2-warning-face                             :underline base09)
-     (js2-error-face                               :foreground nil :underline base08)
-     (js2-external-variable-face                   :foreground base0E)
-     (js2-function-param-face                      :foreground base0D)
-     (js2-instance-member-face                     :foreground base0D)
-     (js2-private-function-call-face               :foreground base08)
-
-     ;; js3-mode
-     (js3-warning-face                             :underline base09)
-     (js3-error-face                               :foreground nil :underline base08)
-     (js3-external-variable-face                   :foreground base0E)
-     (js3-function-param-face                      :foreground base0D)
-     (js3-jsdoc-tag-face                           :foreground base09)
-     (js3-jsdoc-type-face                          :foreground base0C)
-     (js3-jsdoc-value-face                         :foreground base0A)
-     (js3-jsdoc-html-tag-name-face                 :foreground base0D)
-     (js3-jsdoc-html-tag-delimiter-face            :foreground base0B)
-     (js3-instance-member-face                     :foreground base0D)
-     (js3-private-function-call-face               :foreground base08)
-
-     ;; nxml
-     (nxml-name-face                               :foreground unspecified :inherit font-lock-constant-face)
-     (nxml-attribute-local-name-face               :foreground unspecified :inherit font-lock-variable-name-face)
-     (nxml-ref-face                                :foreground unspecified :inherit font-lock-preprocessor-face)
-     (nxml-delimiter-face                          :foreground unspecified :inherit font-lock-keyword-face)
-     (nxml-delimited-data-face                     :foreground unspecified :inherit font-lock-string-face)
-     (rng-error-face                               :underline base08)
-
-     ;; RHTML
-     (erb-delim-face                               :background base03)
-     (erb-exec-face                                :background base03 :weight bold)
-     (erb-exec-delim-face                          :background base03)
-     (erb-out-face                                 :background base03 :weight bold)
-     (erb-out-delim-face                           :background base03)
-     (erb-comment-face                             :background base03 :weight bold :slant italic)
-     (erb-comment-delim-face                       :background base03)
-
-     ;; Message-mode
-     (message-header-other                         :foreground nil :background nil :weight normal)
-     (message-header-subject                       :foreground base0A :weight bold :inherit message-header-other)
-     (message-header-to                            :foreground base09 :weight bold :inherit message-header-other)
-     (message-header-cc                            :foreground nil :inherit message-header-to)
-     (message-header-name                          :foreground base0D :background nil)
-     (message-header-newsgroups                    :foreground base0C :background nil :slant normal)
-     (message-separator                            :foreground base0E)
-
-     ;; Jabber
-     (jabber-chat-prompt-local                     :foreground base0A)
-     (jabber-chat-prompt-foreign                   :foreground base09)
-     (jabber-chat-prompt-system                    :foreground base0A :weight bold)
-     (jabber-chat-text-local                       :foreground base0A)
-     (jabber-chat-text-foreign                     :foreground base09)
-     (jabber-chat-text-error                       :foreground base08)
-
-     (jabber-roster-user-online                    :foreground base0B)
-     (jabber-roster-user-xa                        :foreground base04)
-     (jabber-roster-user-dnd                       :foreground base0A)
-     (jabber-roster-user-away                      :foreground base09)
-     (jabber-roster-user-chatty                    :foreground base0E)
-     (jabber-roster-user-error                     :foreground base08)
-     (jabber-roster-user-offline                   :foreground base04)
-
-     (jabber-rare-time-face                        :foreground base04)
-     (jabber-activity-face                         :foreground base0E)
-     (jabber-activity-personal-face                :foreground base0C)
-
-     ;; Gnus
+;;;; ediff-mode
+     (ediff-even-diff-A                            :foreground nil :background nil :inverse-video t)
+     (ediff-even-diff-B                            :foreground nil :background nil :inverse-video t)
+     (ediff-odd-diff-A                             :foreground base04 :background nil :inverse-video t)
+     (ediff-odd-diff-B                             :foreground base04 :background nil :inverse-video t)
+
+;;;; eldoc-mode
+     (eldoc-highlight-function-argument            :foreground base0B :weight bold)
+
+;;;; erc
+     (erc-direct-msg-face                          :foreground base09)
+     (erc-error-face                               :foreground base08)
+     (erc-header-face                              :foreground base06 :background base04)
+     (erc-input-face                               :foreground base0B)
+     (erc-keyword-face                             :foreground base0A)
+     (erc-current-nick-face                        :foreground base0B)
+     (erc-my-nick-face                             :foreground base0B)
+     (erc-nick-default-face                        :foreground base0E :weight normal)
+     (erc-nick-msg-face                            :foreground base0A :weight normal)
+     (erc-notice-face                              :foreground base04)
+     (erc-pal-face                                 :foreground base09)
+     (erc-prompt-face                              :foreground base0D)
+     (erc-timestamp-face                           :foreground base0C)
+
+;;;; eshell
+     (eshell-ls-archive                            :foreground base08)
+     (eshell-ls-backup                             :foreground base0F)
+     (eshell-ls-clutter                            :foreground base09)
+     (eshell-ls-directory                          :foreground base0D)
+     (eshell-ls-executable                         :foreground base0B)
+     (eshell-ls-missing                            :foreground base08)
+     (eshell-ls-product                            :foreground base0F)
+     (eshell-ls-readonly                           :foreground base06)
+     (eshell-ls-special                            :foreground base0E)
+     (eshell-ls-symlink                            :foreground base0C)
+     (eshell-ls-unreadable                         :foreground base04)
+     (eshell-prompt                                :foreground base05)
+
+;;;; evil-mode
+     (evil-search-highlight-persist-highlight-face :background base01 :inverse-video t :inherit font-lock-warning-face)
+
+;;;; flycheck-mode
+     (flycheck-error                               :underline (:style wave :color base08))
+     (flycheck-info                                :underline (:style wave :color base0B))
+     (flycheck-warning                             :underline (:style wave :color base09))
+
+;;;; flymake-mode
+     (flymake-warnline                             :background base01 :underline base09)
+     (flymake-errline                              :background base01 :underline base08)
+
+;;;; flyspell-mode
+     (flyspell-duplicate                           :underline (:style wave :color base09))
+     (flyspell-incorrect                           :underline (:style wave :color base08))
+
+;;;; git-gutter-mode
+     (git-gutter:added                             :foreground base0B)
+     (git-gutter:deleted                           :foreground base08)
+     (git-gutter:modified                          :foreground base0E)
+     (git-gutter:separator                         :foreground base0C)
+     (git-gutter:unchanged                         :foreground base0A :inverse-video t)
+
+;;;; git-gutter+-mode
+     (git-gutter+-added                            :foreground base0B)
+     (git-gutter+-deleted                          :foreground base08)
+     (git-gutter+-modified                         :foreground base0E)
+     (git-gutter+-unchanged                        :foreground base0A :inverse-video t)
+
+;;;; git-gutter-fringe
+     (git-gutter-fr:added                          :foreground base0B)
+     (git-gutter-fr:deleted                        :foreground base08)
+     (git-gutter-fr:modified                       :foreground base0E)
+
+;;;; gnus
      (gnus-cite-1                                  :foreground nil :inherit outline-1)
      (gnus-cite-2                                  :foreground nil :inherit outline-2)
      (gnus-cite-3                                  :foreground nil :inherit outline-3)

     (font-latex-verbatim-face                     :foreground base09)
     (font-latex-warning-face                      :foreground base08)

     ;; dired+
     (diredp-compressed-file-suffix                :foreground base0D)
     (diredp-dir-heading                           :foreground nil :background nil :inherit heading)
     (diredp-dir-priv                              :foreground base0C :background nil)

   theme-name
   theme-colors

   '(
;;; Built-in
;;;; basic colors
     (border                                       :background base03)
     (cursor                                       :background base08)
     (default                                      :foreground base05 :background base00)
     (fringe                                       :background base02)
     (gui-element                                  :background base01)
     (header-line                                  :foreground base0E :background nil :inherit mode-line)
     (highlight                                    :background base01)
     (link                                         :foreground base0D :underline t)
     (link-visited                                 :foreground base0E :underline t)
     (minibuffer-prompt                            :foreground base0D)
     (region                                       :background base02)
     (secondary-selection                          :background base03)
     (trailing-whitespace                          :foreground base0A :background base0C)
     (widget-button                                :underline t)
     (widget-field                                 :background base03 :box (:line-width 1 :color base06))

     (error                                        :foreground base08 :weight bold)
     (warning                                      :foreground base09 :weight bold)
     (success                                      :foreground base0B :weight bold)

;;;; compilation
     (compilation-column-number                    :foreground base0A)
     (compilation-line-number                      :foreground base0A)
     (compilation-message-face                     :foreground base0D)
     (compilation-mode-line-exit                   :foreground base0B)
     (compilation-mode-line-fail                   :foreground base08)
     (compilation-mode-line-run                    :foreground base0D)

;;;; custom
     (custom-variable-tag                          :foreground base0D)
     (custom-group-tag                             :foreground base0D)
     (custom-state                                 :foreground base0B)

;;;; font-lock
     (font-lock-builtin-face                       :foreground base0C)
     (font-lock-comment-delimiter-face             :foreground base02)
     (font-lock-comment-face                       :foreground base03)
