emacs-elpa-diffs
[Top][All Lists]
Advanced

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

[nongnu] elpa/monokai-theme 28f6f09 017/207: Rewrite theme using bbatsov


From: ELPA Syncer
Subject: [nongnu] elpa/monokai-theme 28f6f09 017/207: Rewrite theme using bbatsov/solarized-emacs as a guide.
Date: Thu, 21 Oct 2021 18:07:22 -0400 (EDT)

branch: elpa/monokai-theme
commit 28f6f099fef7a856489e4ae59c7af55b618c9d46
Author: Kelvin Smith <ksmith@thoughtworks.com>
Commit: Kelvin Smith <ksmith@thoughtworks.com>

    Rewrite theme using bbatsov/solarized-emacs as a guide.
---
 monokai-theme.el | 4791 +++++++++++++++++++++++++++++++++++-------------------
 1 file changed, 3160 insertions(+), 1631 deletions(-)

diff --git a/monokai-theme.el b/monokai-theme.el
index 1db71da..f066897 100644
--- a/monokai-theme.el
+++ b/monokai-theme.el
@@ -4,7 +4,7 @@
 
 ;; Author: Kelvin Smith <oneKelvinSmith@gmail.com>
 ;; URL: http://github.com/oneKelvinSmith/monokai-emacs
-;; Version: 0.1.3
+;; Version: 0.2.0
 
 ;; This program is free software; you can redistribute it and/or modify
 ;; it under the terms of the GNU General Public License as published by
@@ -29,2096 +29,3625 @@
 ;; Wimer Hazenberg created the original theme.
 ;; - http://www.monokai.nl/blog/2006/07/15/textmate-color-theme/
 ;;
-;; Bozhidar Batsov created zenburn-theme.el on which this file is based.
+;; Bozhidar Batsov created zenburn-theme.el and solarized-theme.el
+;;  on which this file is based.
 ;; - https://github.com/bbatsov/zenburn-emacs
 ;;
 ;; Color Scheme Designer 3 for complementary colours.
 ;; - http://colorschemedesigner.com/
 ;;
-;; K. Adam Christensen for his person monokai theme that addresses 256 colors.
+;; K. Adam Christensen for his personal monokai theme that addresses 256 
colours.
 ;; - https://github.com/pope/personal/blob/master/etc/emacs.d/monokai-theme.el
-
+;;
+;; Thomas Frössman for his work on solarized-emacs.
+;; - http://github.com/bbatsov/solarized-emacs
+;;
 ;;; Code:
 
 (unless (>= 24 emacs-major-version)
   (error "The monokai theme requires Emacs 24 or later!"))
 
-(deftheme monokai "The Monokai color theme")
-
-;;; Color Palette
-
-(defvar monokai-colors
-  '((((class color) (min-colors 65535))
-     (monokai-bg-1      . "#171A0B")
-     (monokai-bg        . "#272822")
-     (monokai-bg+1      . "#3E3D31")
-     (monokai-bg+2      . "#49483E")
-     (monokai-red-1     . "#A20C41")
-     (monokai-red       . "#F92672")
-     (monokai-red+1     . "#FC5C94")
-     (monokai-red+2     . "#FC87B0")
-     (monokai-green-1   . "#67930F")
-     (monokai-green     . "#A6E22E")
-     (monokai-green+1   . "#C1F161")
-     (monokai-green+2   . "#CDF187")
-     (monokai-orange-1  . "#A45E0A")
-     (monokai-orange    . "#FD971F")
-     (monokai-orange+1  . "#FEB257")
-     (monokai-orange+2  . "#FEC683")
-     (monokai-yellow-1  . "#968B26")
-     (monokai-yellow    . "#E6DB74")
-     (monokai-yellow+1  . "#F3EA98")
-     (monokai-yellow+2  . "#F3ECB0")
-     (monokai-blue-1    . "#21889B")
-     (monokai-blue      . "#66D9EF")
-     (monokai-blue+1    . "#8DE6F7")
-     (monokai-blue+2    . "#A9EBF7")
-     (monokai-purple-1  . "#562AA6")
-     (monokai-purple    . "#AE81FF")
-     (monokai-purple+1  . "#C2A1FF")
-     (monokai-purple+2  . "#D2BAFF")
-     (monokai-magenta-1 . "#A41F99")
-     (monokai-magenta   . "#FD5FF0")
-     (monokai-magenta+1 . "#FE87F4")
-     (monokai-magenta+2 . "#FEA7F7")
-     (monokai-cyan-1    . "#349B8D")
-     (monokai-cyan      . "#A1EFE4")
-     (monokai-cyan+1    . "#BBF7EF")
-     (monokai-cyan+2    . "#CBF7F1")
-     (monokai-fg-1      . "#75715E")
-     (monokai-fg        . "#F8F8F2")
-     (monokai-fg+1      . "#F8F8F0"))
-    (t
-     (monokai-bg-1      . "#141414")
-     (monokai-bg        . "#1B1E1C")
-     (monokai-bg+1      . "#212121")
-     (monokai-bg+2      . "#303030")
-     (monokai-red-1     . "#5F0000")
-     (monokai-red       . "#FF1493")
-     (monokai-red+1     . "#EE6AA7")
-     (monokai-red+2     . "#FF82AB")
-     (monokai-green-1   . "#6B8E23")
-     (monokai-green     . "#87D700")
-     (monokai-green+1   . "#B3EE3A")
-     (monokai-green+2   . "#CCFF99")
-     (monokai-orange-1  . "#A0522D")
-     (monokai-orange    . "#FF8C00")
-     (monokai-orange+1  . "#FFA54F")
-     (monokai-orange+2  . "#FFD39B")
-     (monokai-yellow-1  . "#968B26")
-     (monokai-yellow    . "#CDC673")
-     (monokai-yellow+1  . "#FFF68F")
-     (monokai-yellow+2  . "#F3ECB0")
-     (monokai-blue-1    . "#21889B")
-     (monokai-blue      . "#5FD7FF")
-     (monokai-blue+1    . "#8DE6F7")
-     (monokai-blue+2    . "#A9EBF7")
-     (monokai-purple-1  . "#562AA6")
-     (monokai-purple    . "#AF87FF")
-     (monokai-purple+1  . "#C2A1FF")
-     (monokai-purple+2  . "#D2BAFF")
-     (monokai-magenta-1 . "#A41F99")
-     (monokai-magenta   . "#D700D7")
-     (monokai-magenta+1 . "#FE87F4")
-     (monokai-magenta+2 . "#FEA7F7")
-     (monokai-cyan-1    . "#349B8D")
-     (monokai-cyan      . "#5FFFFF")
-     (monokai-cyan+1    . "#AFEEEE")
-     (monokai-cyan+2    . "#CBF7F1")
-     (monokai-fg-1      . "#8B8878")
-     (monokai-fg        . "#F5F5F5")
-     (monokai-fg+1      . "#FFFAFA")))
-  "List of Monokai colors.
-Each element has the form (NAME . HEX).
-
-`+N' suffixes indicate a color is lighter.
-`-N' suffixes indicate a color is darker.")
-
-
-(defun monokai-expand-face (face)
-  "Expands the simple `FACE' declaration with the color conditions."
-  (let ((spec (car face))
-        (props (cadr face)))
-    (list spec (mapcar
-                #'(lambda (entry)
-                    (let ((color-condition (car entry)))
-                      (list color-condition
-                            (monokai-expand-colors (cdr entry) props))))
-                monokai-colors))))
-
-(defun monokai-expand-colors (color-alist props)
-  "Expand colors in `COLOR-ALIST' onto `PROPS'."
-  (let ((result '()))
-    (while (car props)
-      (let ((key (car props))
-            (val (cadr props)))
-        (if (memq key '(:foreground :background :color))
-            (setq val (or (cdr (assq val color-alist)) val)))
-        (if (listp val)
-            (setq val (monokai-expand-colors entry val)))
-        (setq result (append result `(,key ,val))))
-      (setq props (cddr props)))
-    result))
-
-(defun monokai-theme-set-faces (theme &rest faces)
-  "Set the `THEME' `FACES' to monokai colors."
-  (apply 'custom-theme-set-faces
-         (append (list theme)
-                 (mapcar 'monokai-expand-face faces))))
-
-;;; Theme Faces
-(monokai-theme-set-faces
- 'monokai
-;;;; Built-in
-;;;;; basic coloring
- '(button
-   (:underline t))
-
- '(link
-   (:foreground monokai-blue
-                :underline t :weight bold))
-
- '(link-visited
-   (:foreground monokai-purple
-                :underline t
-                :weight normal))
-
- '(default
-    (:foreground monokai-fg
-                 :background monokai-bg))
-
- '(cursor
-   (:foreground monokai-bg-1
-                :background monokai-fg))
-
- '(escape-glyph
-   (:foreground monokai-fg-1
-                :bold t))
-
- '(fringe
-   (:foreground monokai-fg
-                :background monokai-bg))
-
- '(header-line
-   (:foreground monokai-fg-1
-                :background monokai-bg-1
-                :box (:line-width -1 :style released-button)))
-
- '(highlight
-   (:foreground monokai-fg+1
-                :background monokai-bg+2))
-
- '(success
-   (:foreground monokai-green
-                :weight bold))
-
- '(warning
-   (:foreground monokai-yellow-1
-                :weight bold))
-
- '(menu
-   (:foreground monokai-fg
-                :background monokai-bg))
-
- '(minibuffer-prompt
-   (:foreground monokai-blue))
-
- '(mode-line
-   (:foreground monokai-fg
-                :background monokai-bg+2
-                :box (:line-width -1 :style released-button)))
-
-
- '(mode-line-buffer-id
-   (:foreground monokai-green
-                :weight bold))
-
- '(mode-line-inactive
-   (:foreground monokai-bg+2
-                :background monokai-bg
-                :box (:line-width -1 :style released-button)))
-
- '(region
-   (:background monokai-bg+2))
-
- '(secondary-selection
-   (:background monokai-bg+2))
-
- '(trailing-whitespace
-   (:background monokai-red))
-
- '(vertical-border
-   (:foreground monokai-bg+2))
+(deftheme monokai "The Monokai colour theme")
+
+(defgroup monokai nil
+  "Monokai theme options.
+The theme has to be reloaded after changing anything in this group."
+  :group 'faces)
+
+(defcustom monokai-distinct-fringe-background nil
+  "Make the fringe background different from the normal background color.
+Also affects 'linum-mode' background."
+  :type 'boolean
+  :group 'monokai)
+
+(defcustom monokai-use-variable-pitch t
+  "Use variable pitch face for some headings and titles."
+  :type 'boolean
+  :group 'monokai)
+
+(defcustom monokai-high-contrast-mode-line nil
+  "Make the active/inactive mode line stand out more."
+  :type 'boolean
+  :group 'monokai)
+
+(defcustom monokai-height-minus-1 0.8
+  "Font size -1."
+  :type 'number
+  :group 'monokai)
+
+(defcustom monokai-height-plus-1 1.1
+  "Font size +1."
+  :type 'number
+  :group 'monokai)
+
+(defcustom monokai-height-plus-2 1.15
+  "Font size +2."
+  :type 'number
+  :group 'monokai)
+
+(defcustom monokai-height-plus-3 1.2
+  "Font size +3."
+  :type 'number
+  :group 'monokai)
+
+(defcustom monokai-height-plus-4 1.3
+  "Font size +4."
+  :type 'number
+  :group 'monokai)
+
+(defun in-terminal ()
+  "Return true if in a terminal."
+  (not (display-graphic-p)))
+
+(defun create-monokai-theme (&optional frame)
+  "Create the monokai theme.
+Takes and optional `FRAME' as reference."
+  (let* ((class '((class color) (min-colors 89)))
+         ;; Accented colors
+         (yellow           (if (in-terminal) "#CDC673" "#E6DB74"))
+         (orange           (if (in-terminal) "#FF8C00" "#FD971F"))
+         (red              (if (in-terminal) "#FF1493" "#F92672"))
+         (magenta          (if (in-terminal) "#D700D7" "#FD5FF0"))
+         (violet           (if (in-terminal) "#AF87FF" "#AE81FF"))
+         (blue             (if (in-terminal) "#5FD7FF" "#66D9EF"))
+         (cyan             (if (in-terminal) "#5FFFFF" "#A1EFE4"))
+         (green            (if (in-terminal) "#87D700" "#A6E22E"))
+
+         ;; Darker and lighter accented colors
+         ;;
+         ;; TODO: find terminal equivalents for all window colors (on the 
right)
+         ;;
+         (yellow-d         (if (in-terminal) "#968B26" "#968B26"))
+         (yellow-l         (if (in-terminal) "#FFF68F" "#F3EA98"))
+         (orange-d         (if (in-terminal) "#A0522D" "#A45E0A"))
+         (orange-l         (if (in-terminal) "#FFA54F" "#FEB257"))
+         (red-d            (if (in-terminal) "#5F0000" "#A20C41"))
+         (red-l            (if (in-terminal) "#EE6AA7" "#FC5C94"))
+         (magenta-d        (if (in-terminal) "#A41F99" "#A41F99"))
+         (magenta-l        (if (in-terminal) "#FE87F4" "#FE87F4"))
+         (violet-d         (if (in-terminal) "#562AA6" "#562AA6"))
+         (violet-l         (if (in-terminal) "#C2A1FF" "#C2A1FF"))
+         (blue-d           (if (in-terminal) "#21889B" "#21889B"))
+         (blue-l           (if (in-terminal) "#8DE6F7" "#8DE6F7"))
+         (cyan-d           (if (in-terminal) "#349B8D" "#349B8D"))
+         (cyan-l           (if (in-terminal) "#AFEEEE" "#BBF7EF"))
+         (green-d          (if (in-terminal) "#6B8E23" "#67930F"))
+         (green-l          (if (in-terminal) "#B3EE3A" "#C1F161"))
+
+         ;; Adaptive colors
+         (monokai-fg       (if (in-terminal) "#F5F5F5" "#F8F8F2"))
+         (monokai-bg       (if (in-terminal) "#1B1E1C" "#272822"))
+         (monokai-hl-line  (if (in-terminal) "#212121" "#3E3D31"))
+         (monokai-hl       (if (in-terminal) "#303030" "#49483E"))
+         (monokai-emph     (if (in-terminal) "#FFFAFA" "#F8F8F0"))
+         (monokai-comments (if (in-terminal) "#8B8878" "#75715E"))
+
+         ;; Adaptive higher/lower contrast accented colors
+         (monokai-fg-hc    (if (in-terminal) "#171A0B" "#141414"))
+         (monokai-fg-lc    (if (in-terminal) "#141414" "#171A0B"))
+
+         (yellow-hc        (if (in-terminal) yellow-d yellow-l))
+         (yellow-lc        (if (in-terminal) yellow-l yellow-d))
+         (orange-hc        (if (in-terminal) orange-d orange-l))
+         (orange-lc        (if (in-terminal) orange-l orange-d))
+         (red-hc           (if (in-terminal) red-d red-l))
+         (red-lc           (if (in-terminal) red-l red-d))
+         (magenta-hc       (if (in-terminal) magenta-d magenta-l))
+         (magenta-lc       (if (in-terminal) magenta-l magenta-d))
+         (violet-hc        (if (in-terminal) violet-d violet-l))
+         (violet-lc        (if (in-terminal) violet-l violet-d))
+         (blue-hc          (if (in-terminal) blue-d blue-l))
+         (blue-lc          (if (in-terminal) blue-l blue-d))
+         (cyan-hc          (if (in-terminal) cyan-d cyan-l))
+         (cyan-lc          (if (in-terminal) cyan-l cyan-d))
+         (green-hc         (if (in-terminal) green-d green-l))
+         (green-lc         (if (in-terminal) green-l green-d))
+
+         ;; customize based face properties
+         (s-variable-pitch (if monokai-use-variable-pitch
+                               'variable-pitch 'default))
+         (s-fringe-bg (if monokai-distinct-fringe-background
+                          monokai-hl monokai-bg))
+
+         (s-mode-line-fg (if monokai-high-contrast-mode-line
+                             monokai-bg monokai-fg))
+         (s-mode-line-bg (if monokai-high-contrast-mode-line
+                             monokai-fg monokai-hl-line))
+         (s-mode-line-buffer-id-fg (if monokai-high-contrast-mode-line
+                                       'unspecified green))
+         (s-mode-line-inactive-fg (if monokai-high-contrast-mode-line
+                                      monokai-fg monokai-comments))
+         (s-mode-line-inactive-bg (if monokai-high-contrast-mode-line
+                                      monokai-hl-line monokai-bg))
+         (s-mode-line-inactive-bc (if monokai-high-contrast-mode-line
+                                      monokai-fg monokai-hl-line)))
+    (custom-theme-set-faces
+     'monokai
+     '(button ((t (:underline t))))
+
+     ;; basic coloring
+     `(default
+        ((,class (:foreground ,monokai-fg
+                              :background ,monokai-bg))))
+
+     `(shadow
+       ((,class (:foreground ,monokai-comments))))
+
+     `(match
+       ((,class (:background ,monokai-hl
+                             :foreground ,monokai-emph
+                             :weight bold))))
+
+     `(cursor
+       ((,class (:foreground ,monokai-bg
+                             :background ,monokai-fg
+                             :inverse-video t))))
+
+     `(mouse
+       ((,class (:foreground ,monokai-bg
+                             :background ,monokai-fg
+                             :inverse-video t))))
+
+     `(escape-glyph-face
+       ((,class (:foreground ,red))))
+
+     `(fringe
+       ((,class (:foreground ,monokai-fg
+                             :background ,s-fringe-bg))))
+
+     `(highlight
+       ((,class (:background ,monokai-hl))))
+
+     `(link
+       ((,class (:foreground ,blue
+                             :underline t
+                             :weight bold))))
+
+     `(link-visited
+       ((,class (:foreground ,blue
+                             :underline t
+                             :weight normal))))
+
+     `(success
+       ((,class (:foreground ,green ))))
+
+     `(warning
+       ((,class (:foreground ,yellow ))))
+
+     `(error
+       ((,class (:foreground ,orange))))
+
+     `(lazy-highlight
+       ((,class (:foreground ,monokai-bg
+                             :background ,yellow
+                             :weight normal))))
+
+     `(escape-glyph
+       ((,class (:foreground ,violet))))
+
+     ;; compilation
+     `(compilation-column-face
+       ((,class (:foreground ,cyan
+                             :underline nil))))
+
+     `(compilation-column-number
+       ((,class (:inherit font-lock-doc-face
+                          :foreground ,cyan
+                          :underline nil))))
+
+     `(compilation-enter-directory-face
+       ((,class (:foreground ,green
+                             :underline nil))))
+
+     `(compilation-error
+       ((,class (:inherit error
+                          :underline nil))))
+
+     `(compilation-error-face
+       ((,class (:foreground ,red
+                             :underline nil))))
+
+     `(compilation-face
+       ((,class (:foreground ,monokai-fg
+                             :underline nil))))
+
+     `(compilation-info
+       ((,class (:foreground ,monokai-comments
+                             :underline nil
+                             :bold nil))))
+
+     `(compilation-info-face
+       ((,class (:foreground ,blue
+                             :underline nil))))
+
+     `(compilation-leave-directory-face
+       ((,class (:foreground ,green
+                             :underline nil))))
+
+     `(compilation-line-face
+       ((,class (:foreground ,green
+                             :underline nil))))
+
+     `(compilation-line-number
+       ((,class (:foreground ,green
+                             :underline nil))))
+
+     `(compilation-warning
+       ((,class (:inherit warning
+                          :underline nil))))
+
+     `(compilation-warning-face
+       ((,class (:foreground ,yellow
+                             :weight normal
+                             :underline nil))))
+
+     `(compilation-mode-line-exit
+       ((,class (:inherit compilation-info
+                          :foreground ,green
+                          :weight bold))))
+
+     `(compilation-mode-line-fail
+       ((,class (:inherit compilation-error
+                          :foreground ,red
+                          :weight bold))))
+
+     `(compilation-mode-line-run
+       ((,class (:foreground ,orange
+                             :weight bold))))
+
+     ;; cua
+     `(cua-global-mark
+       ((,class (:background ,yellow
+                             :foreground ,monokai-bg))))
+
+     `(cua-rectangle
+       ((,class (:inherit region
+                          :background ,magenta
+                          :foreground ,monokai-bg))))
+
+     `(cua-rectangle-noselect
+       ((,class (:inherit region
+                          :background ,monokai-hl
+                          :foreground ,monokai-comments))))
+
+     ;; diary
+     `(diary
+       ((,class (:foreground ,yellow))))
+
+     ;; dired
+     `(dired-directory
+       ((,class (:foreground ,blue
+                             :weight normal))))
+
+     `(dired-flagged
+       ((,class (:foreground ,red))))
+
+     `(dired-header
+       ((,class (:foreground ,monokai-bg
+                             :background ,blue))))
+
+     `(dired-ignored
+       ((,class (:inherit shadow))))
+
+     `(dired-mark
+       ((,class (:foreground ,yellow
+                             :weight bold))))
+
+     `(dired-marked
+       ((,class (:foreground ,magenta
+                             :weight bold))))
+
+     `(dired-perm-write
+       ((,class (:foreground ,monokai-fg
+                             :underline t))))
+
+     `(dired-symlink
+       ((,class (:foreground ,cyan
+                             :weight normal
+                             :slant italic))))
+
+     `(dired-warning
+       ((,class (:foreground ,orange
+                             :underline t))))
+
+     ;; dropdown
+     `(dropdown-list-face
+       ((,class (:background ,monokai-hl
+                             :foreground ,cyan))))
+
+     `(dropdown-list-selection-face
+       ((,class (:background ,cyan-lc
+                             :foreground ,cyan-hc))))
+
+     ;; ecb
+     `(ecb-default-highlight-face
+       ((,class (:background ,blue
+                             :foreground ,monokai-bg))))
+
+     `(ecb-history-bucket-node-dir-soure-path-face
+       ((,class (:inherit ecb-history-bucket-node-face
+                          :foreground ,yellow))))
+
+     `(ecb-source-in-directories-buffer-face
+       ((,class (:inherit ecb-directories-general-face
+                          :foreground ,monokai-fg))))
+
+     `(ecb-history-dead-buffer-face
+       ((,class (:inherit ecb-history-general-face
+                          :foreground ,monokai-comments))))
+
+     `(ecb-directory-not-accessible-face
+       ((,class (:inherit ecb-directories-general-face
+                          :foreground ,monokai-comments))))
+
+     `(ecb-bucket-node-face
+       ((,class (:inherit ecb-default-general-face
+                          :weight normal
+                          :foreground ,blue))))
+
+     `(ecb-tag-header-face
+       ((,class (:background ,monokai-hl))))
+
+     `(ecb-analyse-bucket-element-face
+       ((,class (:inherit ecb-analyse-general-face
+                          :foreground ,green))))
+
+     `(ecb-directories-general-face
+       ((,class (:inherit ecb-default-general-face
+                          :height 1.0))))
+
+     `(ecb-method-non-semantic-face
+       ((,class (:inherit ecb-methods-general-face
+                          :foreground ,cyan))))
+
+     `(ecb-mode-line-prefix-face
+       ((,class (:foreground ,green))))
+
+     `(ecb-tree-guide-line-face
+       ((,class (:inherit ecb-default-general-face
+                          :foreground ,monokai-hl
+                          :height 1.0))))
+
+     ;; ee
+     `(ee-bookmarked
+       ((,class (:foreground ,monokai-emph))))
+
+     `(ee-category
+       ((,class (:foreground ,blue))))
+
+     `(ee-link
+       ((,class (:inherit link))))
+
+     `(ee-link-visited
+       ((,class (:inherit link-visited))))
+
+     `(ee-marked
+       ((,class (:foreground ,magenta
+                             :weight bold))))
+
+     `(ee-omitted
+       ((,class (:foreground ,monokai-comments))))
+
+     `(ee-shadow
+       ((,class (:inherit shadow))))
+
+     ;; grep
+     `(grep-context-face
+       ((,class (:foreground ,monokai-fg))))
+
+     `(grep-error-face
+       ((,class (:foreground ,red
+                             :weight bold
+                             :underline t))))
+
+     `(grep-hit-face
+       ((,class (:foreground ,blue))))
+
+     `(grep-match-face
+       ((,class (:foreground ,orange
+                             :weight bold))))
+
+     ;; faces used by isearch
+     `(isearch
+       ((,class (:foreground ,monokai-bg
+                             :background ,magenta
+                             :weight normal))))
+
+     `(isearch-fail
+       ((,class (:foreground ,red
+                             :background ,monokai-bg
+                             :bold t))))
+
+     ;; man
+     `(Man-overstrike
+       ((,class (:foreground ,blue
+                             :weight bold))))
+
+     `(Man-reverse
+       ((,class (:foreground ,orange))))
+
+     `(Man-underline
+       ((,class (:foreground ,green :underline t))))
+
+     ;; misc faces
+     `(menu
+       ((,class (:foreground ,monokai-fg
+                             :background ,monokai-bg))))
+
+     `(minibuffer-prompt
+       ((,class (:foreground ,blue))))
+
+     `(mode-line
+       ((,class (:inverse-video unspecified
+                                :underline unspecified
+                                :foreground ,s-mode-line-fg
+                                :background ,s-mode-line-bg
+                                :box (:line-width 1
+                                                  :color ,s-mode-line-bg
+                                                  :style unspecified)))))
+
+     `(mode-line-buffer-id
+       ((,class (:foreground ,s-mode-line-buffer-id-fg
+                             :weight bold))))
+
+     `(mode-line-inactive
+       ((,class (:inverse-video unspecified
+                                :underline unspecified
+                                :foreground ,s-mode-line-inactive-fg
+                                :background ,s-mode-line-inactive-bg
+                                :box (:line-width 1
+                                                  :color 
,s-mode-line-inactive-bc
+                                                  :style unspecified)))))
+
+     `(header-line
+       ((,class (:inverse-video unspecified
+                                :underline unspecified
+                                :foreground ,monokai-emph
+                                :background ,monokai-hl
+                                :box (:line-width 1
+                                                  :color ,monokai-hl
+                                                  :style unspecified)))))
+
+     `(region
+       ((,class (:background ,monokai-hl
+                             :inherit t))))
+
+     `(secondary-selection
+       ((,class (:background ,monokai-hl
+                             :inherit t))))
+
+
+     `(trailing-whitespace
+       ((,class (:background ,red))))
+
+     `(vertical-border
+       ((,class (:foreground ,monokai-hl))))
+
+     ;; font lock
+     `(font-lock-builtin-face
+       ((,class (:foreground ,red
+                             :weight normal))))
+
+     `(font-lock-comment-delimiter-face
+       ((,class (:foreground ,monokai-comments))))
+
+     `(font-lock-comment-face
+       ((,class (:foreground ,monokai-comments))))
+
+     `(font-lock-constant-face
+       ((,class (:foreground ,violet))))
+
+     `(font-lock-doc-face
+       ((,class (:foreground ,monokai-comments))))
+
+     `(font-lock-function-name-face
+       ((,class (:foreground ,green))))
+
+     `(font-lock-keyword-face
+       ((,class (:foreground ,red
+                             :weight normal))))
+
+     `(font-lock-negation-char-face
+       ((,class (:foreground ,yellow
+                             :weight bold))))
+
+     `(font-lock-preprocessor-face
+       ((,class (:foreground ,red))))
+
+     `(font-lock-regexp-grouping-construct
+       ((,class (:foreground ,yellow
+                             :weight normal))))
+
+     `(font-lock-regexp-grouping-backslash
+       ((,class (:foreground ,violet
+                             :weight normal))))
+
+     `(font-lock-string-face
+       ((,class (:foreground ,yellow))))
+
+     `(font-lock-type-face
+       ((,class (:foreground ,blue
+                             :italic t))))
+
+     `(font-lock-variable-name-face
+       ((,class (:foreground ,orange))))
+
+     `(font-lock-warning-face
+       ((,class (:foreground ,orange
+                             :weight bold
+                             :italic t
+                             :underline t))))
+
+     `(c-annotation-face
+       ((,class (:inherit font-lock-constant-face))))
+
+
+     ;;; external
+
+     ;; ace-jump-mode
+     `(ace-jump-face-background
+       ((,class (:foreground ,monokai-comments
+                             :background ,monokai-bg
+                             :inverse-video nil))))
+
+     `(ace-jump-face-foreground
+       ((,class (:foreground ,red :background ,monokai-bg
+                             :inverse-video nil
+                             :weight bold))))
+
+     ;; auctex
+     `(font-latex-bold-face
+       ((,class (:inherit bold
+                          :foreground ,monokai-emph))))
+
+     `(font-latex-doctex-documentation-face
+       ((,class (:background unspecified))))
+
+     `(font-latex-doctex-preprocessor-face
+       ((,class
+         (:inherit (font-latex-doctex-documentation-face
+                    font-lock-builtin-face
+                    font-lock-preprocessor-face)))))
+
+     `(font-latex-italic-face
+       ((,class (:inherit italic :foreground ,monokai-emph))))
+
+     `(font-latex-math-face
+       ((,class (:foreground ,violet))))
+
+     `(font-latex-sectioning-0-face
+       ((,class (:inherit font-latex-sectioning-1-face
+                          :height ,monokai-height-plus-1))))
+
+     `(font-latex-sectioning-1-face
+       ((,class (:inherit font-latex-sectioning-2-face
+                          :height ,monokai-height-plus-1))))
+
+     `(font-latex-sectioning-2-face
+       ((,class (:inherit font-latex-sectioning-3-face
+                          :height ,monokai-height-plus-1))))
+
+     `(font-latex-sectioning-3-face
+       ((,class (:inherit font-latex-sectioning-4-face
+                          :height ,monokai-height-plus-1))))
+
+     `(font-latex-sectioning-4-face
+       ((,class (:inherit font-latex-sectioning-5-face
+                          :height ,monokai-height-plus-1))))
+
+     `(font-latex-sectioning-5-face
+       ((,class (:inherit ,s-variable-pitch :foreground ,yellow
+                          :weight bold))))
+
+     `(font-latex-sedate-face
+       ((,class (:foreground ,monokai-emph))))
+
+     `(font-latex-slide-title-face
+       ((,class (:inherit (,s-variable-pitch font-lock-type-face)
+                          :weight bold
+                          :height ,monokai-height-plus-3))))
 
-;;;;; compilation
- '(compilation-column-face
-   (:foreground monokai-yellow))
+     `(font-latex-string-face
+       ((,class (:foreground ,cyan))))
 
- '(compilation-enter-directory-face
-   (:foreground monokai-green))
+     `(font-latex-subscript-face
+       ((,class (:height ,monokai-height-minus-1))))
 
- '(compilation-error-face
-   (:foreground monokai-red
-                :weight bold
-                :underline t))
+     `(font-latex-superscript-face
+       ((,class (:height ,monokai-height-minus-1))))
 
- '(compilation-face
-   (:foreground monokai-fg))
+     `(font-latex-verbatim-face
+       ((,class (:inherit fixed-pitch
+                          :foreground ,monokai-fg
+                          :slant italic))))
 
- '(compilation-info-face
-   (:foreground monokai-blue))
+     `(font-latex-warning-face
+       ((,class (:inherit bold
+                          :foreground ,orange))))
 
- '(compilation-info
-   (:foreground monokai-purple
-                :underline t))
+     ;; auto-complete
+     `(ac-candidate-face
+       ((,class (:background ,monokai-hl
+                             :foreground ,cyan))))
 
- '(compilation-leave-directory-face
-   (:foreground monokai-green))
+     `(ac-selection-face
+       ((,class (:background ,cyan-lc
+                             :foreground ,cyan-hc))))
 
- '(compilation-line-face
-   (:foreground monokai-bg+2))
+     `(ac-candidate-mouse-face
+       ((,class (:background ,cyan-hc
+                             :foreground ,cyan-lc))))
 
- '(compilation-line-number
-   (:foreground monokai-bg+2))
+     `(ac-completion-face
+       ((,class (:foreground ,monokai-emph
+                             :underline t))))
 
- '(compilation-message-face
-   (:foreground monokai-blue))
+     `(ac-gtags-candidate-face
+       ((,class (:background ,monokai-hl
+                             :foreground ,blue))))
 
- '(compilation-warning-face
-   (:foreground monokai-yellow-1
-                :weight bold
-                :underline t))
+     `(ac-gtags-selection-face
+       ((,class (:background ,blue-lc
+                             :foreground ,blue-hc))))
 
-;;;;; grep
- '(grep-context-face
-   (:foreground monokai-fg))
+     `(ac-yasnippet-candidate-face
+       ((,class (:background ,monokai-hl
+                             :foreground ,yellow))))
 
- '(grep-error-face
-   (:foreground monokai-red
-                :weight bold
-                :underline t))
+     `(ac-yasnippet-selection-face
+       ((,class (:background ,yellow-lc
+                             :foreground ,yellow-hc))))
 
- '(grep-hit-face
-   (:foreground monokai-magenta))
+     ;; auto highlight symbol
+     `(ahs-definition-face
+       ((,class (:foreground ,magenta
+                             :background unspecified
+                             :slant normal))))
 
- '(grep-match-face
-   (:foreground monokai-orange
-                :weight bold))
+     `(ahs-edit-mode-face
+       ((,class (:foreground ,monokai-bg
+                             :background ,magenta))))
 
- '(match
-   (:foreground monokai-green
-                :background monokai-bg-1
-                :weight bold))
+     `(ahs-face
+       ((,class (:foreground ,magenta
+                             :background unspecified))))
 
-;;;;; isearch
- '(isearch
-   (:foreground monokai-orange
-                :background monokai-bg-1))
+     `(ahs-plugin-bod-face
+       ((,class (:foreground ,magenta
+                             :background unspecified ))))
 
- '(isearch-fail
-   (:foreground monokai-fg+1
-                :background monokai-red))
+     `(ahs-plugin-defalt-face
+       ((,class (:foreground ,magenta
+                             :background unspecified))))
 
- '(lazy-highlight
-   (:foreground monokai-magenta
-                :background monokai-bg-1))
+     `(ahs-plugin-whole-buffer-face
+       ((,class (:foreground ,magenta
+                             :background unspecified))))
 
-;;;;; font lock
- '(font-lock-builtin-face
-   (:foreground monokai-green))
+     `(ahs-warning-face
+       ((,class (:foreground ,red
+                             :weight bold))))
+
+     ;; android mode
+     `(android-mode-debug-face
+       ((,class (:foreground ,green))))
+
+     `(android-mode-error-face
+       ((,class (:foreground ,orange
+                             :weight bold))))
+
+     `(android-mode-info-face
+       ((,class (:foreground ,monokai-fg))))
 
- '(font-lock-comment-delimiter-face
-   (:foreground monokai-fg-1))
+     `(android-mode-verbose-face
+       ((,class (:foreground ,monokai-comments))))
+
+     `(android-mode-warning-face
+       ((,class (:foreground ,yellow))))
 
- '(font-lock-comment-face
-   (:foreground monokai-fg-1))
+     ;; anzu-mode
+     `(anzu-mode-line
+       ((,class (:foreground ,magenta
+                             :weight bold))))
 
- '(font-lock-constant-face
-   (:foreground monokai-purple))
+     ;; bm
+     `(bm-face
+       ((,class (:background ,yellow-lc
+                             :foreground ,monokai-bg))))
+
+     `(bm-fringe-face
+       ((,class (:background ,yellow-lc
+                             :foreground ,monokai-bg))))
+
+     `(bm-fringe-persistent-face
+       ((,class (:background ,green-lc
+                             :foreground ,monokai-bg))))
+
+     `(bm-persistent-face
+       ((,class (:background ,green-lc
+                             :foreground ,monokai-bg))))
+
+     ;; calfw
+     `(cfw:face-day-title
+       ((,class (:background ,monokai-hl))))
+
+     `(cfw:face-annotation
+       ((,class (:inherit cfw:face-day-title
+                          :foreground ,yellow))))
+
+     `(cfw:face-default-content
+       ((,class (:foreground ,green))))
+
+     `(cfw:face-default-day
+       ((,class (:inherit cfw:face-day-title
+                          :weight bold))))
+
+     `(cfw:face-disable
+       ((,class (:inherit cfw:face-day-title
+                          :foreground ,monokai-comments))))
+
+     `(cfw:face-grid
+       ((,class (:foreground ,monokai-comments))))
+
+     `(cfw:face-header
+       ((,class (:foreground ,blue-hc
+                             :background ,blue-lc
+                             :weight bold))))
+
+     `(cfw:face-holiday
+       ((,class (:background nil
+                             :foreground ,red
+                             :weight bold))))
+
+     `(cfw:face-periods
+       ((,class (:foreground ,magenta))))
+
+     `(cfw:face-select
+       ((,class (:background ,magenta-lc
+                             :foreground ,magenta-hc))))
+
+     `(cfw:face-saturday
+       ((,class (:foreground ,cyan-hc
+                             :background ,cyan-lc))))
+
+     `(cfw:face-sunday
+       ((,class (:foreground ,red-hc
+                             :background ,red-lc :weight bold))))
+
+     `(cfw:face-title
+       ((,class (:inherit ,s-variable-pitch
+                          :foreground ,yellow
+                          :weight bold :height ,monokai-height-plus-4))))
+
+     `(cfw:face-today
+       ((,class (:weight bold
+                         :background ,monokai-hl
+                         :foreground nil))))
+
+     `(cfw:face-today-title
+       ((,class (:background ,yellow-lc
+                             :foreground ,yellow-hc
+                             :weight bold))))
+
+     `(cfw:face-toolbar
+       ((,class (:background ,monokai-hl
+                             :foreground ,monokai-fg))))
+
+     `(cfw:face-toolbar-button-off
+       ((,class (:background ,yellow-lc
+                             :foreground ,yellow-hc
+                             :weight bold))))
+
+     `(cfw:face-toolbar-button-on
+       ((,class (:background ,yellow-hc
+                             :foreground ,yellow-lc
+                             :weight bold))))
+
+
+     ;; clojure-test-mode
+     `(clojure-test-failure-face
+       ((t (:foreground ,orange
+                        :weight bold
+                        :underline t))))
+
+     `(clojure-test-error-face
+       ((t (:foreground ,red
+                        :weight bold
+                        :underline t))))
+
+     `(clojure-test-success-face
+       ((t (:foreground ,green
+                        :weight bold
+                        :underline t))))
+
+     ;; company-mode
+     `(company-tooltip
+       ((,class (:background ,monokai-hl
+                             :foreground ,cyan))))
+
+     `(company-tooltip-selection
+       ((,class (:background ,cyan-lc
+                             :foreground ,cyan-hc))))
+
+     `(company-tooltip-mouse
+       ((,class (:background ,cyan-hc
+                             :foreground ,cyan-lc))))
+
+     `(company-tooltip-common
+       ((,class (:foreground ,monokai-emph
+                             :underline t))))
+
+     `(company-tooltip-common-selection
+       ((,class (:foreground ,monokai-emph
+                             :underline t))))
+
+     `(company-preview
+       ((,class (:background ,monokai-hl
+                             :foreground ,cyan))))
+
+     `(company-preview-common
+       ((,class (:foreground ,monokai-emph
+                             :underline t))))
+
+     ;; cscope
+     `(cscope-file-face
+       ((,class (:foreground ,green
+                             :weight bold))))
+
+     `(cscope-function-face
+       ((,class (:foreground ,blue))))
+
+     `(cscope-line-number-face
+       ((,class (:foreground ,yellow))))
+
+     `(cscope-line-face
+       ((,class (:foreground ,monokai-fg))))
+
+     `(cscope-mouse-face
+       ((,class (:background ,blue
+                             :foreground ,monokai-fg))))
+
+     ;; ctable
+     `(ctbl:face-cell-select
+       ((,class (:background ,monokai-hl
+                             :foreground ,monokai-emph
+                             :underline ,monokai-emph
+                             :weight bold))))
+
+     `(ctbl:face-continue-bar
+       ((,class (:background ,monokai-hl
+                             :foreground ,yellow))))
+
+     `(ctbl:face-row-select
+       ((,class (:background ,monokai-hl
+                             :foreground ,monokai-fg
+                             :underline t))))
+
+     ;; coffee
+     `(coffee-mode-class-name
+       ((,class (:foreground ,yellow
+                             :weight bold))))
+
+     `(coffee-mode-function-param
+       ((,class (:foreground ,violet
+                             :slant italic))))
+
+     ;; custom
+     `(custom-face-tag
+       ((,class (:inherit ,s-variable-pitch
+                          :height ,monokai-height-plus-3
+                          :foreground ,violet
+                          :weight bold))))
+
+     `(custom-variable-tag
+       ((,class (:inherit ,s-variable-pitch
+                          :foreground ,cyan
+                          :height ,monokai-height-plus-3))))
+
+     `(custom-comment-tag
+       ((,class (:foreground ,monokai-comments))))
+
+     `(custom-group-tag
+       ((,class (:inherit ,s-variable-pitch
+                          :foreground ,blue
+                          :height ,monokai-height-plus-3))))
+
+     `(custom-group-tag-1
+       ((,class (:inherit ,s-variable-pitch
+                          :foreground ,red
+                          :height ,monokai-height-plus-3))))
+
+     `(custom-state
+       ((,class (:foreground ,green))))
+
+     ;; diff
+     `(diff-added
+       ((,class (:foreground ,green
+                             :background ,monokai-bg))))
+
+     `(diff-changed
+       ((,class (:foreground ,blue
+                             :background ,monokai-bg))))
+
+     `(diff-removed
+       ((,class (:foreground ,red
+                             :background ,monokai-bg))))
+
+     `(diff-header
+       ((,class (:background ,monokai-bg))))
+
+     `(diff-file-header
+       ((,class (:background ,monokai-bg
+                             :foreground ,monokai-fg
+                             :weight bold))))
+
+     `(diff-refine-added
+       ((,class :foreground ,monokai-bg
+                :background ,green)))
+
+     `(diff-refine-change
+       ((,class :foreground ,monokai-bg
+                :background ,blue)))
+
+     `(diff-refine-removed
+       ((,class (:foreground ,monokai-bg
+                             :background ,red))))
+
+     ;; ediff
+     `(ediff-fine-diff-A
+       ((,class (:background ,orange-lc))))
+
+     `(ediff-fine-diff-B
+       ((,class (:background ,green-lc))))
+
+     `(ediff-fine-diff-C
+       ((,class (:background ,yellow-lc))))
+
+     `(ediff-current-diff-C
+       ((,class (:background ,blue-lc))))
+
+     `(ediff-even-diff-A
+       ((,class (:background ,monokai-comments
+                             :foreground ,monokai-fg-lc ))))
+
+     `(ediff-odd-diff-A
+       ((,class (:background ,monokai-comments
+                             :foreground ,monokai-fg-hc ))))
+
+     `(ediff-even-diff-B
+       ((,class (:background ,monokai-comments
+                             :foreground ,monokai-fg-hc ))))
+
+     `(ediff-odd-diff-B
+       ((,class (:background ,monokai-comments
+                             :foreground ,monokai-fg-lc ))))
+
+     `(ediff-even-diff-C
+       ((,class (:background ,monokai-comments
+                             :foreground ,monokai-fg ))))
+
+     `(ediff-odd-diff-C
+       ((,class (:background ,monokai-comments
+                             :foreground ,monokai-bg ))))
+
+     ;; diff-hl
+     `(diff-hl-change
+       ((,class (:background ,blue-lc
+                             :foreground ,blue-hc))))
+
+     `(diff-hl-delete
+       ((,class (:background ,red-lc
+                             :foreground ,red-hc))))
+
+     `(diff-hl-insert
+       ((,class (:background ,green-lc
+                             :foreground ,green-hc))))
+
+     `(diff-hl-unknown
+       ((,class (:background ,cyan-lc
+                             :foreground ,cyan-hc))))
+
+     ;; edts
+     `(edts-face-error-line
+       ((,(append '((supports :underline (:style line))) class)
+         (:underline (:style line :color ,(if (in-terminal) red-l red))
+                     :inherit unspecified))
+        (,class (:foreground ,red-hc
+                             :background ,red-lc
+                             :weight bold
+                             :underline t))))
+
+     `(edts-face-warning-line
+       ((,(append '((supports :underline (:style line))) class)
+         (:underline (:style line :color ,(if (in-terminal) yellow-l yellow))
+                     :inherit unspecified))
+        (,class (:foreground ,yellow-hc
+                             :background ,yellow-lc
+                             :weight bold
+                             :underline t))))
+
+     `(edts-face-error-fringe-bitmap
+       ((,class (:foreground ,(if (in-terminal) red-l red)
+                             :background unspecified
+                             :weight bold))))
+
+     `(edts-face-warning-fringe-bitmap
+       ((,class (:foreground ,(if (in-terminal) yellow-l yellow)
+                             :background unspecified
+                             :weight bold))))
+
+     `(edts-face-error-mode-line
+       ((,class (:background ,(if (in-terminal) red-l red)
+                             :foreground unspecified))))
+
+     `(edts-face-warning-mode-line
+       ((,class (:background ,(if (in-terminal) yellow-l yellow)
+                             :foreground unspecified))))
+
+
+     ;; elfeed
+     `(elfeed-search-date-face
+       ((,class (:foreground ,monokai-comments))))
+
+     `(elfeed-search-feed-face
+       ((,class (:foreground ,monokai-comments))))
+
+     `(elfeed-search-tag-face
+       ((,class (:foreground ,monokai-fg))))
+
+     `(elfeed-search-title-face
+       ((,class (:foreground ,cyan))))
+
+     ;; enhanced ruby mode
+     `(enh-ruby-string-delimiter-face
+       ((,class (:inherit font-lock-string-face))))
+
+     `(enh-ruby-heredoc-delimiter-face
+       ((,class (:inherit font-lock-string-face))))
+
+     `(enh-ruby-regexp-delimiter-face
+       ((,class (:inherit font-lock-string-face))))
+
+     `(enh-ruby-op-face
+       ((,class (:inherit font-lock-keyword-face))))
+
+     `(erm-syn-errline
+       ((,(append '((supports :underline (:style wave))) class)
+         (:underline (:style wave :color ,red)
+                     :inherit unspecified))
+        (,class (:foreground ,red-hc
+                             :background ,red-lc
+                             :weight bold
+                             :underline t))))
+
+     `(erm-syn-warnline
+       ((,(append '((supports :underline (:style wave))) class)
+         (:underline (:style wave :color ,orange)
+                     :inherit unspecified))
+        (,class (:foreground ,orange-hc
+                             :background ,orange-lc
+                             :weight bold
+                             :underline t))))
 
- '(font-lock-doc-face
-   (:foreground monokai-fg-1))
+     ;; epc
+     `(epc:face-title
+       ((,class (:foreground ,blue
+                             :background ,monokai-bg
+                             :weight normal
+                             :underline nil))))
 
- '(font-lock-doc-string-face
-   (:foreground monokai-fg-1))
+     ;; erc
+     `(erc-action-face
+       ((,class (:inherit erc-default-face))))
 
- '(font-lock-function-name-face
-   (:foreground monokai-green))
+     `(erc-bold-face
+       ((,class (:weight bold))))
 
- '(font-lock-keyword-face
-   (:foreground monokai-red
-                :weight bold))
+     `(erc-current-nick-face
+       ((,class (:foreground ,blue :weight bold))))
+
+     `(erc-dangerous-host-face
+       ((,class (:inherit font-lock-warning-face))))
+
+     `(erc-default-face
+       ((,class (:foreground ,monokai-fg))))
+
+     `(erc-highlight-face
+       ((,class (:inherit erc-default-face
+                          :background ,monokai-hl))))
 
- '(font-lock-negation-char-face
-   (:foreground monokai-fg-1))
+     `(erc-direct-msg-face
+       ((,class (:inherit erc-default-face))))
 
- '(font-lock-preprocessor-face
-   (:foreground monokai-red))
+     `(erc-error-face
+       ((,class (:inherit font-lock-warning-face))))
 
- '(font-lock-regexp-grouping-construct
-   (:foreground monokai-orange
-                :weight bold))
+     `(erc-fool-face
+       ((,class (:inherit erc-default-face))))
 
- '(font-lock-regexp-grouping-backslash
-   (:foreground monokai-green
-                :weight bold))
+     `(erc-input-face
+       ((,class (:foreground ,yellow))))
 
- '(font-lock-string-face
-   (:foreground monokai-yellow))
+     `(erc-keyword-face
+       ((,class (:foreground ,blue
+                             :weight bold))))
+
+     `(erc-nick-default-face
+       ((,class (:foreground ,yellow
+                             :weight bold))))
+
+     `(erc-my-nick-face
+       ((,class (:foreground ,red
+                             :weight bold))))
+
+     `(erc-nick-msg-face
+       ((,class (:inherit erc-default-face))))
+
+     `(erc-notice-face
+       ((,class (:foreground ,green))))
+
+     `(erc-pal-face
+       ((,class (:foreground ,orange
+                             :weight bold))))
+
+     `(erc-prompt-face
+       ((,class (:foreground ,orange
+                             :background ,monokai-bg
+                             :weight bold))))
+
+     `(erc-timestamp-face
+       ((,class (:foreground ,green))))
+
+     `(erc-underline-face ((t (:underline t))))
+
+     ;; eshell
+     `(eshell-prompt
+       ((,class (:foreground ,yellow
+                             :weight bold))))
+
+     `(eshell-ls-archive
+       ((,class (:foreground ,red
+                             :weight bold))))
+
+     `(eshell-ls-backup
+       ((,class (:inherit font-lock-comment-face))))
+
+     `(eshell-ls-clutter
+       ((,class (:inherit font-lock-comment-face))))
+
+     `(eshell-ls-directory
+       ((,class (:foreground ,blue
+                             :weight bold))))
+
+     `(eshell-ls-executable
+       ((,class (:foreground ,red
+                             :weight bold))))
+
+     `(eshell-ls-unreadable
+       ((,class (:foreground ,monokai-fg))))
+
+     `(eshell-ls-missing
+       ((,class (:inherit font-lock-warning-face))))
+
+     `(eshell-ls-product
+       ((,class (:inherit font-lock-doc-face))))
+
+     `(eshell-ls-special
+       ((,class (:foreground ,yellow
+                             :weight bold))))
+
+     `(eshell-ls-symlink
+       ((,class (:foreground ,cyan
+                             :weight bold))))
+
+     ;; fic
+     `(fic-author-face
+       ((,class (:background ,monokai-bg
+                             :foreground ,orange
+                             :underline t
+                             :slant italic))))
+
+     `(fic-face
+       ((,class (:background ,monokai-bg
+                             :foreground ,orange
+                             :weight normal
+                             :slant italic))))
+
+     `(font-lock-fic-face
+       ((,class (:background ,monokai-bg
+                             :foreground ,orange
+                             :weight normal
+                             :slant italic))))
+
+     ;; flx
+     `(flx-highlight-face
+       ((,class (:foreground ,blue
+                             :weight normal
+                             :underline nil))))
+
+     ;; flymake
+     `(flymake-errline
+       ((,(append '((supports :underline (:style wave))) class)
+         (:underline (:style wave :color ,red)
+                     :inherit unspecified
+                     :foreground unspecified
+                     :background unspecified))
+        (,class (:foreground ,red-hc
+                             :background ,red-lc
+                             :weight bold
+                             :underline t))))
+
+     `(flymake-infoline
+       ((,(append '((supports :underline (:style wave))) class)
+         (:underline (:style wave :color ,green)
+                     :inherit unspecified
+                     :foreground unspecified
+                     :background unspecified))
+        (,class (:foreground ,green-hc
+                             :background ,green-lc))))
+
+     `(flymake-warnline
+       ((,(append '((supports :underline (:style wave))) class)
+         (:underline (:style wave :color ,yellow)
+                     :inherit unspecified
+                     :foreground unspecified
+                     :background unspecified))
+        (,class (:foreground ,yellow-hc
+                             :background ,yellow-lc
+                             :weight bold
+                             :underline t))))
+
+     ;; flycheck
+     `(flycheck-error
+       ((,(append '((supports :underline (:style wave))) class)
+         (:underline (:style wave :color ,red)
+                     :inherit unspecified))
+        (,class (:foreground ,red-hc
+                             :background ,red-lc
+                             :weight bold
+                             :underline t))))
+
+     `(flycheck-warning
+       ((,(append '((supports :underline (:style wave))) class)
+         (:underline (:style wave :color ,yellow)
+                     :inherit unspecified))
+        (,class (:foreground ,yellow-hc
+                             :background ,yellow-lc
+                             :weight bold
+                             :underline t))))
+
+     `(flycheck-info
+       ((,(append '((supports :underline (:style wave))) class)
+         (:underline (:style wave :color ,blue)
+                     :inherit unspecified))
+        (,class (:foreground ,blue-hc
+                             :background ,blue-lc
+                             :weight bold
+                             :underline t))))
+
+     `(flycheck-fringe-error
+       ((,class (:foreground ,red-hc
+                             :background ,red-lc
+                             :weight bold))))
+
+     `(flycheck-fringe-warning
+       ((,class (:foreground ,yellow-hc
+                             :background ,yellow-lc
+                             :weight bold))))
+
+     `(flycheck-fringe-info
+       ((,class (:foreground ,blue-hc
+                             :background ,blue-lc
+                             :weight bold))))
+
+     ;; flyspell
+     `(flyspell-duplicate
+       ((,(append '((supports :underline (:style wave))) class)
+         (:underline (:style wave :color ,yellow)
+                     :inherit unspecified))
+        (,class (:foreground ,yellow
+                             :weight bold
+                             :underline t))))
+
+     `(flyspell-incorrect
+       ((,(append '((supports :underline (:style wave))) class)
+         (:underline (:style wave :color ,red)
+                     :inherit unspecified))
+        (,class (:foreground ,red
+                             :weight bold
+                             :underline t))))
+
+
+     ;; git-gutter
+     `(git-gutter:added
+       ((,class (:background ,green
+                             :foreground ,monokai-bg
+                             :weight bold))))
+
+     `(git-gutter:deleted
+       ((,class (:background ,red
+                             :foreground ,monokai-bg
+                             :weight bold))))
+
+     `(git-gutter:modified
+       ((,class (:background ,blue
+                             :foreground ,monokai-bg
+                             :weight bold))))
+
+     `(git-gutter:unchanged
+       ((,class (:background ,monokai-hl
+                             :foreground ,monokai-bg
+                             :weight bold))))
+
+     ;; git-gutter-fr
+     `(git-gutter-fr:added
+       ((,class (:foreground ,green
+                             :weight bold))))
+
+     `(git-gutter-fr:deleted
+       ((,class (:foreground ,red
+                             :weight bold))))
+
+     `(git-gutter-fr:modified
+       ((,class (:foreground ,blue
+                             :weight bold))))
+
+     ;; git-gutter+ and git-gutter+-fr
+     `(git-gutter+-added
+       ((,class (:background ,green
+                             :foreground ,monokai-bg
+                             :weight bold))))
+
+     `(git-gutter+-deleted
+       ((,class (:background ,red
+                             :foreground ,monokai-bg
+                             :weight bold))))
+
+     `(git-gutter+-modified
+       ((,class (:background ,blue
+                             :foreground ,monokai-bg
+                             :weight bold))))
+
+     `(git-gutter+-unchanged
+       ((,class (:background ,monokai-hl
+                             :foreground ,monokai-bg
+                             :weight bold))))
+
+     `(git-gutter-fr+-added
+       ((,class (:foreground ,green
+                             :weight bold))))
+
+     `(git-gutter-fr+-deleted
+       ((,class (:foreground ,red
+                             :weight bold))))
+
+     `(git-gutter-fr+-modified
+       ((,class (:foreground ,blue
+                             :weight bold))))
+
+     ;; guide-key
+     `(guide-key/highlight-command-face
+       ((,class (:foreground ,blue))))
+
+     `(guide-key/key-face
+       ((,class (:foreground ,monokai-comments))))
+
+     `(guide-key/prefix-command-face
+       ((,class (:foreground ,green))))
 
- '(font-lock-type-face
-   (:foreground monokai-blue))
+     ;; gnus
+     `(gnus-group-mail-1
+       ((,class (:weight bold
+                         :inherit gnus-group-mail-1-empty))))
 
- '(font-lock-variable-name-face
-   (:foreground monokai-orange))
+     `(gnus-group-mail-1-empty
+       ((,class (:inherit gnus-group-news-1-empty))))
 
- '(font-lock-warning-face
-   (:foreground monokai-yellow-1
-                :weight bold))
+     `(gnus-group-mail-2
+       ((,class (:weight bold
+                         :inherit gnus-group-mail-2-empty))))
 
- '(c-annotation-face
-   (:inherit 'font-lock-constant-face))
+     `(gnus-group-mail-2-empty
+       ((,class (:inherit gnus-group-news-2-empty))))
 
-;;;;; newsticker
- '(newsticker-date-face
-   (:foreground monokai-fg))
+     `(gnus-group-mail-3
+       ((,class (:weight bold
+                         :inherit gnus-group-mail-3-empty))))
 
- '(newsticker-default-face
-   (:foreground monokai-fg))
+     `(gnus-group-mail-3-empty
+       ((,class (:inherit gnus-group-news-3-empty))))
 
- '(newsticker-enclosure-face
-   (:foreground monokai-green+1))
+     `(gnus-group-mail-low
+       ((,class (:weight bold
+                         :inherit gnus-group-mail-low-empty))))
 
- '(newsticker-extra-face
-   (:foreground monokai-fg-1
-                :height 0.8))
+     `(gnus-group-mail-low-empty
+       ((,class (:inherit gnus-group-news-low-empty))))
 
- '(newsticker-feed-face
-   (:foreground monokai-fg))
+     `(gnus-group-news-1
+       ((,class (:weight bold
+                         :inherit gnus-group-news-1-empty))))
 
- '(newsticker-immortal-item-face
-   (:foreground monokai-green))
+     `(gnus-group-news-2
+       ((,class (:weight bold
+                         :inherit gnus-group-news-2-empty))))
 
- '(newsticker-new-item-face
-   (:foreground monokai-blue))
+     `(gnus-group-news-3
+       ((,class (:weight bold
+                         :inherit gnus-group-news-3-empty))))
 
- '(newsticker-obsolete-item-face
-   (:foreground monokai-red))
+     `(gnus-group-news-4
+       ((,class (:weight bold
+                         :inherit gnus-group-news-4-empty))))
 
- '(newsticker-old-item-face
-   (:foreground monokai-fg-1))
+     `(gnus-group-news-5
+       ((,class (:weight bold
+                         :inherit gnus-group-news-5-empty))))
 
- '(newsticker-statistics-face
-   (:foreground monokai-fg))
+     `(gnus-group-news-6
+       ((,class (:weight bold
+                         :inherit gnus-group-news-6-empty))))
 
- '(newsticker-treeview-face
-   (:foreground monokai-fg))
+     `(gnus-group-news-low
+       ((,class (:weight bold
+                         :inherit gnus-group-news-low-empty))))
 
- '(newsticker-treeview-immortal-face
-   (:foreground monokai-green))
+     `(gnus-header-content
+       ((,class (:inherit message-header-other))))
 
- '(newsticker-treeview-listwindow-face
-   (:foreground monokai-fg))
+     `(gnus-header-from
+       ((,class (:inherit message-header-other))))
 
- '(newsticker-treeview-new-face
-   (:foreground monokai-blue
-                :weight bold))
+     `(gnus-header-name
+       ((,class (:inherit message-header-name))))
 
- '(newsticker-treeview-obsolete-face
-   (:foreground monokai-red))
+     `(gnus-header-newsgroups
+       ((,class (:inherit message-header-other))))
 
- '(newsticker-treeview-old-face
-   (:foreground monokai-fg-1))
+     `(gnus-header-subject
+       ((,class (:inherit message-header-subject))))
 
- '(newsticker-treeview-selection-face
-   (:foreground monokai-orange))
-;;;; Third-party
-;;;;; ace-jump
- '(ace-jump-face-background
-   (:foreground monokai-fg-1
-                :background monokai-bg
-                :inverse-video nil))
+     `(gnus-summary-cancelled
+       ((,class (:foreground ,orange))))
 
- '(ace-jump-face-foreground
-   (:foreground monokai-green
-                :background monokai-bg
-                :inverse-video nil))
+     `(gnus-summary-high-ancient
+       ((,class (:foreground ,blue
+                             :weight bold))))
 
-;;;;; full-ack
- '(ack-separator
-   (:foreground monokai-fg))
+     `(gnus-summary-high-read
+       ((,class (:foreground ,green
+                             :weight bold))))
 
- '(ack-file
-   (:foreground monokai-blue))
+     `(gnus-summary-high-ticked
+       ((,class (:foreground ,orange
+                             :weight bold))))
 
- '(ack-line
-   (:foreground monokai-yellow))
+     `(gnus-summary-high-unread
+       ((,class (:foreground ,monokai-fg
+                             :weight bold))))
 
- '(ack-match
-   (:foreground monokai-orange
-                :background monokai-bg-1
-                :weight bold))
-;;;;; acutes
- '(font-latex-bold
-   (:inherit 'bold))
+     `(gnus-summary-low-ancient
+       ((,class (:foreground ,blue))))
 
- '(font-latex-warning
-   (:inherit 'font-lock-warning))
+     `(gnus-summary-low-read
+       ((t (:foreground ,green))))
 
- '(font-latex-sedate
-   (:foreground monokai-fg-1
-                :weight bold ))
+     `(gnus-summary-low-ticked
+       ((,class (:foreground ,orange))))
 
- '(font-latex-title-4
-   (:inherit 'variable-pitch
-             :weight bold))
+     `(gnus-summary-low-unread
+       ((,class (:foreground ,monokai-fg))))
 
-;;;;; auto-complete
- '(ac-candidate-face
-   (:background monokai-bg+1
-                :foreground monokai-fg-1))
+     `(gnus-summary-normal-ancient
+       ((,class (:foreground ,blue))))
 
- '(ac-selection-face
-   (:background monokai-bg+2
-                :foreground monokai-orange))
+     `(gnus-summary-normal-read
+       ((,class (:foreground ,green))))
 
- '(popup-tip-face
-   (:background monokai-bg+2
-                :foreground monokai-orange))
+     `(gnus-summary-normal-ticked
+       ((,class (:foreground ,orange))))
 
- '(popup-scroll-bar-foreground-face
-   (:background monokai-fg-1))
+     `(gnus-summary-normal-unread
+       ((,class (:foreground ,monokai-fg))))
 
- '(popup-scroll-bar-background-face
-   (:background monokai-bg-1))
+     `(gnus-summary-selected
+       ((,class (:foreground ,yellow
+                             :weight bold))))
 
- '(popup-isearch-match
-   (:background monokai-bg
-                :foreground monokai-fg))
+     `(gnus-cite-1
+       ((,class (:foreground ,blue))))
 
-;;;;; android mode
- '(android-mode-debug-face
-   (:foreground monokai-green))
+     `(gnus-cite-2
+       ((,class (:foreground ,blue))))
 
- '(android-mode-error-face
-   (:foreground monokai-orange
-                :weight bold))
+     `(gnus-cite-3
+       ((,class (:foreground ,blue))))
 
- '(android-mode-info-face
-   (:foreground monokai-blue))
+     `(gnus-cite-4
+       ((,class (:foreground ,green))))
 
- '(android-mode-verbose-face
-   (:foreground monokai-purple))
+     `(gnus-cite-5
+       ((,class (:foreground ,green))))
 
- '(android-mode-warning-face
-   (:foreground monokai-yellow-1))
+     `(gnus-cite-6
+       ((,class (:foreground ,green))))
 
-;;;;; bm
- '(bm-face
-   (:background monokai-yellow-1
-                :foreground monokai-bg))
+     `(gnus-cite-7
+       ((,class (:foreground ,red))))
 
- '(bm-fringe-face
-   (:background monokai-yellow-1
-                :foreground monokai-bg))
+     `(gnus-cite-8
+       ((,class (:foreground ,red))))
 
- '(bm-fringe-persistent-face
-   (:background monokai-orange-1
-                :foreground monokai-bg))
+     `(gnus-cite-9
+       ((,class (:foreground ,red))))
 
- '(bm-persistent-face
-   (:background monokai-orange-1
-                :foreground monokai-bg))
+     `(gnus-cite-10
+       ((,class (:foreground ,yellow))))
 
-;;;;; clojure-test-mode
- '(clojure-test-failure-face
-   (:foreground monokai-red
-                :weight bold
-                :underline t))
+     `(gnus-cite-11
+       ((,class (:foreground ,yellow))))
 
- '(clojure-test-error-face
-   (:foreground monokai-orange
-                :weight bold
-                :underline t))
+     `(gnus-group-news-1-empty
+       ((,class (:foreground ,yellow))))
 
- '(clojure-test-success-face
-   (:foreground monokai-green
-                :weight bold
-                :underline t))
+     `(gnus-group-news-2-empty
+       ((,class (:foreground ,green))))
 
-;;;;; ctable
- '(ctbl:face-cell-select
-   (:background monokai-blue
-                :foreground monokai-bg))
+     `(gnus-group-news-3-empty
+       ((,class (:foreground ,green))))
 
- '(ctbl:face-continue-bar
-   (:background monokai-bg-1
-                :foreground monokai-bg))
+     `(gnus-group-news-4-empty
+       ((,class (:foreground ,blue))))
 
- '(ctbl:face-row-select
-   (:background monokai-cyan
-                :foreground monokai-bg))
+     `(gnus-group-news-5-empty
+       ((,class (:foreground ,blue))))
 
-;;;;; diff
- '(diff-added
-   (:foreground monokai-green
-                :background monokai-bg-1))
+     `(gnus-group-news-6-empty
+       ((,class (:foreground ,blue-lc))))
 
- '(diff-changed
-   (:foreground monokai-yellow))
+     `(gnus-group-news-low-empty
+       ((,class (:foreground ,monokai-comments))))
 
- '(diff-removed
-   (:foreground monokai-red
-                :background monokai-bg-1))
+     `(gnus-signature
+       ((,class (:foreground ,yellow))))
 
- '(diff-refine-added
-   (:inherit 'diff-added
-             :weight bold))
+     `(gnus-x-face
+       ((,class (:background ,monokai-fg
+                             :foreground ,monokai-bg))))
 
- '(diff-refine-change
-   (:inherit 'diff-changed
-             :weight bold))
 
- '(diff-refine-removed
-   (:inherit 'diff-removed
-             :weight bold))
+     ;; helm (these probably needs tweaking)
+     `(helm-apt-deinstalled
+       ((,class (:foreground ,monokai-comments))))
 
- '(diff-header
-   (:background monokai-bg+1))
+     `(helm-apt-installed
+       ((,class (:foreground ,green))))
 
- '(diff-file-header
-   (:background monokai-bg+1
-                :foreground monokai-fg
-                :bold t))
+     `(helm-bookmark-directory
+       ((,class (:inherit helm-ff-directory))))
 
-;;;;; dired+
- '(diredp-display-msg
-   (:foreground monokai-blue))
+     `(helm-bookmark-file
+       ((,class (:foreground ,monokai-fg))))
 
- '(diredp-compressed-file-suffix
-   (:foreground monokai-orange))
+     `(helm-bookmark-gnus
+       ((,class (:foreground ,cyan))))
 
- '(diredp-date-time
-   (:foreground monokai-magenta))
+     `(helm-bookmark-info
+       ((,class (:foreground ,green))))
 
- '(diredp-deletion
-   (:foreground monokai-yellow))
+     `(helm-bookmark-man
+       ((,class (:foreground ,violet))))
 
- '(diredp-deletion-file-name
-   (:foreground monokai-red))
+     `(helm-bookmark-w3m
+       ((,class (:foreground ,yellow))))
 
- '(diredp-dir-heading
-   (:foreground monokai-blue
-                :background monokai-bg-1))
+     `(helm-bookmarks-su
+       ((,class (:foreground ,orange))))
 
- '(diredp-dir-priv
-   (:foreground monokai-cyan))
+     `(helm-buffer-not-saved
+       ((,class (:foreground ,orange))))
 
- '(diredp-exec-priv
-   (:foreground monokai-red))
+     `(helm-buffer-saved-out
+       ((,class (:foreground ,red
+                             :background ,monokai-bg
+                             :inverse-video t))))
 
- '(diredp-executable-tag
-   (:foreground monokai-green+1))
+     `(helm-buffer-size
+       ((,class (:foreground ,monokai-comments))))
 
- '(diredp-file-name
-   (:foreground monokai-blue))
+     `(helm-candidate-number
+       ((,class (:background ,monokai-hl
+                             :foreground ,monokai-emph
+                             :bold t))))
 
- '(diredp-file-suffix
-   (:foreground monokai-green))
+     `(helm-ff-directory
+       ((,class (:background ,monokai-bg
+                             :foreground ,blue))))
 
- '(diredp-flag-mark
-   (:foreground monokai-yellow))
+     `(helm-ff-executable
+       ((,class (:foreground ,green))))
 
- '(diredp-flag-mark-line
-   (:foreground monokai-orange))
+     `(helm-ff-file
+       ((,class (:background ,monokai-bg
+                             :foreground ,monokai-fg))))
 
- '(diredp-ignored-file-name
-   (:foreground monokai-red))
+     `(helm-ff-invalid-symlink
+       ((,class (:background ,monokai-bg
+                             :foreground ,orange
+                             :slant italic))))
 
- '(diredp-link-priv
-   (:foreground monokai-yellow))
+     `(helm-ff-prefix
+       ((,class (:background ,yellow
+                             :foreground ,monokai-bg))))
 
- '(diredp-mode-line-flagged
-   (:foreground monokai-yellow))
+     `(helm-ff-symlink
+       ((,class (:foreground ,cyan))))
 
- '(diredp-mode-line-marked
-   (:foreground monokai-orange))
+     `(helm-grep-file
+       ((,class (:foreground ,cyan
+                             :underline t))))
 
- '(diredp-no-priv
-   (:foreground monokai-fg))
+     `(helm-grep-finish
+       ((,class (:foreground ,green))))
 
- '(diredp-number
-   (:foreground monokai-green+1))
+     `(helm-grep-lineno
+       ((,class (:foreground ,orange))))
 
- '(diredp-other-priv
-   (:foreground monokai-yellow-1))
+     `(helm-grep-match
+       ((,class (:inherit match))))
 
- '(diredp-rare-priv
-   (:foreground monokai-red-1))
+     `(helm-grep-running
+       ((,class (:foreground ,red))))
 
- '(diredp-read-priv
-   (:foreground monokai-green-1))
+     `(helm-header
+       ((,class (:inherit header-line))))
 
- '(diredp-symlink
-   (:foreground monokai-yellow))
+     `(helm-lisp-completion-info
+       ((,class (:foreground ,monokai-fg))))
 
- '(diredp-write-priv
-   (:foreground monokai-magenta))
+     `(helm-lisp-show-completion
+       ((,class (:foreground ,yellow
+                             :background ,monokai-hl
+                             :bold t))))
 
-;;;;; ert
- '(ert-test-result-expected
-   (:foreground monokai-green
-                :background monokai-bg))
+     `(helm-M-x-key
+       ((,class (:foreground ,orange
+                             :underline t))))
 
- '(ert-test-result-unexpected
-   (:foreground monokai-red
-                :background monokai-bg))
+     `(helm-moccur-buffer
+       ((,class (:foreground ,cyan
+                             :underline t))))
 
-;;;;; eshell
- '(eshell-prompt
-   (:foreground monokai-fg
-                :weight bold))
+     `(helm-match
+       ((,class (:inherit match))))
 
- '(eshell-ls-archive
-   (:foreground monokai-purple
-                :weight bold))
+     `(helm-selection
+       ((,class (:background ,monokai-hl
+                             :underline t))))
 
- '(eshell-ls-backup
-   (:inherit 'font-lock-comment))
+     `(helm-selection-line
+       ((,class (:background ,monokai-hl
+                             :foreground ,monokai-emph
+                             :underline nil))))
 
- '(eshell-ls-clutter
-   (:inherit 'font-lock-comment))
+     `(helm-separator
+       ((,class (:foreground ,red))))
 
- '(eshell-ls-directory
-   (:foreground monokai-blue
-                :weight bold))
+     `(helm-source-header
+       ((,class (:background ,blue-lc
+                             :foreground ,monokai-bg
+                             :underline nil))))
 
- '(eshell-ls-executable
-   (:foreground monokai-green
-                :weight bold))
+     `(helm-swoop-target-line-face
+       ((,class (:background ,monokai-hl))))
 
- '(eshell-ls-unreadable
-   (:foreground monokai-red))
+     `(helm-swoop-target-line-block-face
+       ((,class (:background ,monokai-hl))))
 
- '(eshell-ls-missing
-   (:inherit 'font-lock-warning))
+     `(helm-swoop-target-word-face
+       ((,class (:foreground ,magenta
+                             :background unspecified))))
 
- '(eshell-ls-product
-   (:inherit 'font-lock-doc))
+     `(helm-time-zone-current
+       ((,class (:foreground ,green))))
 
- '(eshell-ls-special
-   (:foreground monokai-yellow
-                :weight bold))
+     `(helm-time-zone-home
+       ((,class (:foreground ,red))))
 
- '(eshell-ls-symlink
-   (:foreground monokai-cyan
-                :weight bold))
+     `(helm-visible-mark
+       ((,class (:background ,monokai-bg
+                             :foreground ,magenta :bold t))))
 
-;;;;; flx
-'(flx-highlight-face
-  (:foreground monokai-green
-               :weight bold))
-;;;;; flycheck
- '(flycheck-error
-   (supports :underline
-             (:style wave)
-             (:underline (:style wave :color monokai-red))))
+     ;; hi-lock-mode
+     `(hi-yellow
+       ((,class (:foreground ,yellow-lc
+                             :background ,yellow-hc))))
 
- '(flycheck-warning
-   (supports :underline
-             (:style wave)
-             (:underline (:style wave :color monokai-yellow-1))))
+     `(hi-pink
+       ((,class (:foreground ,magenta-lc
+                             :background ,magenta-hc))))
 
- '(flycheck-fringe-error
-   (:foreground monokai-red
-                :weight bold))
-
- '(flycheck-fringe-warning
-   (:foreground monokai-yellow-1
-                :weight bold))
-;;;;; flymake
- '(flymake-errline
-   (supports :underline
-             (:style wave)
-             (:underline (:style wave :color ,monokai-red))))
-
- '(flymake-warnline
-   (supports :underline
-             (:style wave)
-             (:underline (:style wave :color ,monokai-yellow-1))))
- '(flymake-infoline
-   (supports :underline
-             (:style wave)
-             (:underline
-              (:style wave :color ,monokai-blue))))
-
-;;;;; flyspell
- '(flyspell-duplicate
-   (supports :underline
-             (:style wave)
-             (:underline
-              (:style wave :color ,monokai-orange) :inherit unspecified)))
- '(flyspell-incorrect
-   (supports :underline
-             (:style wave)
-             (:underline
-              (:style wave :color ,monokai-red) :inherit unspecified)))
-
- ;;;;; erc
-  '(erc-action-face
-    (:inherit 'erc-default-face))
-
-  '(erc-bold-face
-    (:weight bold))
-
-  '(erc-current-nick-face
-    (:foreground monokai-blue
-                 :weight bold))
-
-  '(erc-dangerous-host-face
-    (:inherit 'font-lock-warning))
-
-  '(erc-default-face
-    (:foreground monokai-fg))
-
-  '(erc-direct-msg-face
-    (:inherit 'erc-default))
-
-  '(erc-error-face
-    (:inherit 'font-lock-warning))
-
-  '(erc-fool-face
-    (:inherit 'erc-default))
-
-  '(erc-highlight-face
-    (:inherit 'hover-highlight))
-
-  '(erc-input-face
-    (:foreground monokai-fg-1))
-
-  '(erc-keyword-face
-    (:foreground monokai-blue
-                 :weight bold))
-
-  '(erc-nick-default-face
-    (:foreground monokai-fg-1
-                 :weight bold))
-
-  '(erc-my-nick-face
-    (:foreground monokai-red
-                 :weight bold))
-
-  '(erc-nick-msg-face
-    (:inherit 'erc-default))
-
-  '(erc-notice-face
-    (:foreground monokai-green))
-
-  '(erc-pal-face
-    (:foreground monokai-orange
-                 :weight bold))
-
-  '(erc-prompt-face
-    (:foreground monokai-orange
-                 :background monokai-bg
-                 :weight bold))
-
-  '(erc-timestamp-face
-    (:foreground monokai-green+1))
-
-  '(erc-underline-face
-    (:underline t))
-
- ;;;;; git-gutter
-  '(git-gutter:added
-    (:foreground monokai-green
-                 :weight bold
-                 :inverse-video t))
-
-  '(git-gutter:deleted
-    (:foreground monokai-red
-                 :weight bold
-                 :inverse-video t))
+     `(hi-green
+       ((,class (:foreground ,green-lc
+                             :background ,green-hc))))
 
-  '(git-gutter:modified
-    (:foreground monokai-yellow
-                 :weight bold
-                 :inverse-video t))
+     `(hi-blue
+       ((,class (:foreground ,blue-lc
+                             :background ,blue-hc))))
 
- ;;;;; git-gutter-fr
-  '(git-gutter-fr:added
-    (:foreground monokai-green
-                 :weight bold))
+     `(hi-black-b
+       ((,class (:foreground ,monokai-emph
+                             :background ,monokai-bg
+                             :weight bold))))
 
-  '(git-gutter-fr:deleted
-    (:foreground monokai-red
-                 :weight bold))
+     `(hi-blue-b
+       ((,class (:foreground ,blue-lc
+                             :weight bold))))
 
-  '(git-gutter-fr:modified
-    (:foreground monokai-yellow
-                 :weight bold))
+     `(hi-green-b
+       ((,class (:foreground ,green-lc
+                             :weight bold))))
 
-  ;; gnus
-  '(gnus-group-mail-1
-    (:inherit 'gnus-group-mail-1-empty))
+     `(hi-red-b
+       ((,class (:foreground ,red
+                             :weight bold))))
 
-  '(gnus-group-mail-1-empty
-    (:inherit 'gnus-group-news-1-empty))
+     `(hi-black-hb
+       ((,class (:foreground ,monokai-emph
+                             :background ,monokai-bg
+                             :weight bold))))
 
-  '(gnus-group-mail-2
-    (:bold t
-           :inherit 'gnus-group-mail-2-empty))
 
-  '(gnus-group-mail-2-empty
-    (:inherit 'gnus-group-news-2-empty))
+     ;; highlight-changes
+     `(highlight-changes
+       ((,class (:foreground ,orange))))
 
-  '(gnus-group-mail-3
-    (:bold t
-           :inherit 'gnus-group-mail-3-empty))
+     `(highlight-changes-delete
+       ((,class (:foreground ,red
+                             :underline t))))
 
-  '(gnus-group-mail-3-empty
-    (:inherit 'gnus-group-news-3-empty))
 
-  '(gnus-group-mail-4
-    (:bold t
-           :inherit 'gnus-group-mail-4-empty))
+     ;; highlight-indentation
+     `(highlight-indentation-face
+       ((,class (:background ,monokai-hl))))
 
-  '(gnus-group-mail-4-empty
-    (:inherit 'gnus-group-news-4-empty))
+     `(highlight-indentation-current-column-face
+       ((,class (:background ,monokai-hl))))
 
-  '(gnus-group-mail-5
-    (:bold t
-           :inherit 'gnus-group-mail-5-empty))
+     ;; hl-line-mode
+     `(hl-line
+       ((,class (:background ,monokai-hl-line
+                             :inherit t))))
 
-  '(gnus-group-mail-5-empty
-    (:inherit 'gnus-group-news-5-empty))
+     `(hl-line-face
+       ((,class (:background ,monokai-hl-line
+                             :inherit t))))
 
-  '(gnus-group-mail-6
-    (:bold t
-           :inherit 'gnus-group-mail-6-empty))
+     ;; ido-mode
+     `(ido-first-match
+       ((,class (:foreground ,yellow
+                             :weight normal))))
 
-  '(gnus-group-mail-6-empty
-    (:inherit 'gnus-group-news-6-empty))
+     `(ido-only-match
+       ((,class (:foreground ,monokai-bg
+                             :background ,yellow
+                             :weight normal))))
 
-  '(gnus-group-mail-low
-    (:bold t
-           :inherit 'gnus-group-mail-low-empty))
+     `(ido-subdir
+       ((,class (:foreground ,blue))))
 
-  '(gnus-group-mail-low-empty
-    (:inherit 'gnus-group-news-low-empty))
+     `(ido-incomplete-regexp
+       ((,class (:foreground ,red
+                             :weight bold ))))
 
-  '(gnus-group-news-1
-    (:bold t
-           :inherit 'gnus-group-news-1-empty))
+     `(ido-indicator
+       ((,class (:background ,red
+                             :foreground ,monokai-bg
+                             :width condensed))))
 
-  '(gnus-group-news-2
-    (:bold t
-           :inherit 'gnus-group-news-2-empty))
+     `(ido-virtual
+       ((,class (:foreground ,cyan))))
 
-  '(gnus-group-news-3
-    (:bold t
-           :inherit 'gnus-group-news-3-empty))
+     `(jabber-activity-face
+       ((,class (:weight bold
+                         :foreground ,red))))
 
-  '(gnus-group-news-4
-    (:bold t
-           :inherit 'gnus-group-news-4-empty))
+     `(jabber-activity-personal-face
+       ((,class (:weight bold
+                         :foreground ,blue))))
 
-  '(gnus-group-news-5
-    (:bold t
-           :inherit 'gnus-group-news-5-empty))
+     `(jabber-chat-error
+       ((,class (:weight bold
+                         :foreground ,red))))
 
-  '(gnus-group-news-6
-    (:bold t
-           :inherit 'gnus-group-news-6-empty))
+     `(jabber-chat-prompt-foreign
+       ((,class (:weight bold
+                         :foreground ,red))))
 
-  '(gnus-group-news-low
-    (:bold t
-           :inherit 'gnus-group-news-low-empty))
+     `(jabber-chat-prompt-local
+       ((,class (:weight bold
+                         :foreground ,blue))))
 
-  '(gnus-header-content
-    (:inherit 'message-header-other))
+     `(jabber-chat-prompt-system
+       ((,class (:weight bold
+                         :foreground ,green))))
 
-  '(gnus-header-from
-    (:inherit 'message-header-from))
+     `(jabber-chat-text-foreign
+       ((,class (:foreground ,monokai-comments))))
 
-  '(gnus-header-name
-    (:inherit 'message-header-name))
+     `(jabber-chat-text-local
+       ((,class (:foreground ,monokai-fg))))
 
-  '(gnus-header-newsgroups
-    (:inherit 'message-header-other))
+     `(jabber-chat-rare-time-face
+       ((,class (:underline t
+                            :foreground ,green))))
 
-  '(gnus-header-subject
-    (:inherit 'message-header-subject))
+     `(jabber-roster-user-away
+       ((,class (:slant italic
+                        :foreground ,green))))
 
-  '(gnus-summary-cancelled
-    (:foreground monokai-orange))
+     `(jabber-roster-user-chatty
+       ((,class (:weight bold
+                         :foreground ,orange))))
 
-  '(gnus-summary-high-ancient
-    (:foreground monokai-blue))
+     `(jabber-roster-user-dnd
+       ((,class (:slant italic
+                        :foreground ,red))))
 
-  '(gnus-summary-high-read
-    (:foreground monokai-green
-                 :weight bold))
+     `(jabber-roster-user-error
+       ((,class (:weight light
+                         :slant italic
+                         :foreground ,red))))
 
-  '(gnus-summary-high-ticked
-    (:foreground monokai-orange
-                 :weight bold))
+     `(jabber-roster-user-offline
+       ((,class (:foreground ,monokai-comments))))
 
-  '(gnus-summary-high-unread
-    (:foreground monokai-fg
-                 :weight bold))
+     `(jabber-roster-user-online
+       ((,class (:weight bold
+                         :foreground ,blue))))
 
-  '(gnus-summary-low-ancient
-    (:foreground monokai-blue))
+     `(jabber-roster-user-xa
+       ((,class (:slant italic
+                        :foreground ,magenta))))
 
-  '(gnus-summary-low-read
-    (:foreground monokai-green))
+     ;; js2-mode colors
+     `(js2-error
+       ((,class (:foreground ,red))))
 
-  '(gnus-summary-low-ticked
-    (:foreground monokai-orange
-                 :weight bold))
+     `(js2-external-variable
+       ((,class (:foreground ,orange))))
 
-  '(gnus-summary-low-unread
-    (:foreground monokai-fg))
+     `(js2-function-param
+       ((,class (:foreground ,green))))
 
-  '(gnus-summary-normal-ancient
-    (:foreground monokai-blue))
+     `(js2-instance-member
+       ((,class (:foreground ,magenta))))
 
-  '(gnus-summary-normal-read
-    (:foreground monokai-green))
+     `(js2-jsdoc-html-tag-delimiter
+       ((,class (:foreground ,cyan))))
 
-  '(gnus-summary-normal-ticked
-    (:foreground monokai-orange
-                 :weight bold))
+     `(js2-jsdoc-html-tag-name
+       ((,class (:foreground ,orange))))
 
-  '(gnus-summary-normal-unread
-    (:foreground monokai-fg))
+     `(js2-jsdoc-tag
+       ((,class (:foreground ,cyan))))
 
-  '(gnus-summary-selected
-    (:foreground monokai-fg-1
-                 :weight bold))
+     `(js2-jsdoc-type
+       ((,class (:foreground ,blue))))
 
-  '(gnus-cite-1
-    (:foreground monokai-blue))
+     `(js2-jsdoc-value
+       ((,class (:foreground ,violet))))
 
-  '(gnus-cite-10
-    (:foreground monokai-yellow-1))
+     `(js2-magic-paren
+       ((,class (:underline t))))
 
-  '(gnus-cite-11
-    (:foreground monokai-yellow))
+     `(js2-private-function-call
+       ((,class (:foreground ,yellow))))
 
-  '(gnus-cite-2
-    (:foreground monokai-blue-1))
+     `(js2-private-member
+       ((,class (:foreground ,blue))))
 
-  '(gnus-cite-3
-    (:foreground monokai-cyan))
+     `(js2-warning
+       ((,class (:underline ,orange))))
 
-  '(gnus-cite-4
-    (:foreground monokai-purple))
+     ;; jedi
+     `(jedi:highlight-function-argument
+       ((,class (:inherit bold))))
 
-  '(gnus-cite-5
-    (:foreground monokai-green+1))
+     ;; linum-mode
+     `(linum
+       ((,class (:foreground ,monokai-comments
+                             :background ,s-fringe-bg))))
 
-  '(gnus-cite-6
-    (:foreground monokai-green))
+     ;; lusty-explorer
+     `(lusty-directory-face
+       ((,class (:inherit dired-directory))))
 
-  '(gnus-cite-7
-    (:foreground monokai-red))
+     `(lusty-file-face
+       ((,class nil)))
+     `(lusty-match-face
+       ((,class (:inherit ido-first-match))))
 
-  '(gnus-cite-8
-    (:foreground monokai-red))
+     `(lusty-slash-face
+       ((,class (:foreground ,cyan
+                             :weight bold))))
 
-  '(gnus-cite-9
-    (:foreground monokai-purple))
+     ;; magit
+     `(magit-section-title
+       ((,class (:foreground ,yellow
+                             :weight bold))))
 
-  '(gnus-group-news-1-empty
-    (:foreground monokai-fg-1))
+     `(magit-branch
+       ((,class (:foreground ,orange
+                             :weight bold))))
 
-  '(gnus-group-news-2-empty
-    (:foreground monokai-green+1))
+     `(magit-item-highlight
+       ((,class (:background ,monokai-hl
+                             :weight unspecified))))
 
-  '(gnus-group-news-3-empty
-    (:foreground monokai-green+1))
+     `(magit-log-author
+       ((,class (:foreground ,cyan))))
 
-  '(gnus-group-news-4-empty
-    (:foreground monokai-cyan))
+     `(magit-log-graph
+       ((,class (:foreground ,monokai-comments))))
 
-  '(gnus-group-news-5-empty
-    (:foreground monokai-cyan+1))
+     `(magit-log-head-label-bisect-bad
+       ((,class (:background ,red-hc
+                             :foreground ,red-lc
+                             :box 1))))
 
-  '(gnus-group-news-6-empty
-    (:foreground monokai-bg+2))
+     `(magit-log-head-label-bisect-good
+       ((,class (:background ,green-hc
+                             :foreground ,green-lc
+                             :box 1))))
 
-  '(gnus-group-news-low-empty
-    (:foreground monokai-bg+2))
+     `(magit-log-head-label-default
+       ((,class (:background ,monokai-hl :box 1))))
 
-  '(gnus-signature
-    (:foreground monokai-fg-1))
+     `(magit-log-head-label-local
+       ((,class (:background ,blue-lc
+                             :foreground ,blue-hc
+                             :box 1))))
 
-  '(gnus-x
-    (:background monokai-fg
-                 :foreground monokai-bg))
- ;;;;; guide-key
-  '(guide-key/highlight-command-face
-    (:foreground monokai-blue))
+     `(magit-log-head-label-patches
+       ((,class (:background ,red-lc
+                             :foreground ,red-hc
+                             :box 1))))
 
-  '(guide-key/key-face
-    (:foreground monokai-green))
+     `(magit-log-head-label-remote
+       ((,class (:background ,green-lc
+                             :foreground ,green-hc
+                             :box 1))))
 
-  '(guide-key/prefix-command-face
-    (:foreground monokai-green+1))
+     `(magit-log-head-label-tags
+       ((,class (:background ,yellow-lc
+                             :foreground ,yellow-hc
+                             :box 1))))
 
- ;;;;; helm
-  '(helm-header
-    (:foreground monokai-green
-                 :background monokai-bg
-                 :underline nil :box nil))
+     `(magit-log-sha1
+       ((,class (:foreground ,yellow))))
 
-  '(helm-source-header
-    (:foreground monokai-yellow
-                 :background monokai-bg-1
-                 :underline nil :weight bold
-                 :box (:line-width -1 :style released-button)))
+     ;; markdown-mode
+     `(markdown-header-face
+       ((,class (:foreground ,green))))
 
-  '(helm-selection
-    (:background monokai-bg+2
-                 :underline nil))
+     `(markdown-header-face-1
+       ((,class (:inherit markdown-header-face
+                          :height ,monokai-height-plus-4))))
 
-  '(helm-selection-line
-    (:background monokai-bg+1))
+     `(markdown-header-face-2
+       ((,class (:inherit markdown-header-face
+                          :height ,monokai-height-plus-3))))
 
-  '(helm-visible-mark
-    (:foreground monokai-fg-1
-                 :background monokai-bg+2))
+     `(markdown-header-face-3
+       ((,class (:inherit markdown-header-face
+                          :height ,monokai-height-plus-2))))
 
-  '(helm-candidate-number
-    (:foreground monokai-green+2
-                 :background monokai-bg-1))
+     `(markdown-header-face-4
+       ((,class (:inherit markdown-header-face
+                          :height ,monokai-height-plus-1))))
 
-  '(helm-ff-directory
-    (:foreground monokai-magenta))
+     `(markdown-header-face-5
+       ((,class (:inherit markdown-header-face))))
 
- ;;;;; hl-line-mode
-  '(hl-line
-    (:background monokai-bg+1 :inherit 't))
+     `(markdown-header-face-6
+       ((,class (:inherit markdown-header-face))))
 
- ;;;;; hl-sexp
-  '(hl-sexp-face
-    (:background monokai-bg+1 :inherit 't))
+     ;; message-mode
+     `(message-cited-text
+       ((,class (:foreground ,monokai-comments))))
 
- ;;;;; ido-mode
-  '(ido-first-match
-    (:foreground monokai-orange
-                 :background monokai-bg
-                 :weight bold))
+     `(message-header-name
+       ((,class (:foreground ,monokai-comments))))
 
-  '(ido-only-match
-    (:foreground monokai-green
-                 :background monokai-bg
-                 :weight bold))
+     `(message-header-other
+       ((,class (:foreground ,monokai-fg
+                             :weight normal))))
 
-  '(ido-subdir
-    (:foreground monokai-blue
-                 :background monokai-bg))
+     `(message-header-to
+       ((,class (:foreground ,monokai-fg
+                             :weight normal))))
 
- ;;;;; Js2-mode
-  '(js2-warning-face
-    (:foreground monokai-yellow-1
-                 :underline t))
+     `(message-header-cc
+       ((,class (:foreground ,monokai-fg
+                             :weight normal))))
 
-  '(js2-error-face
-    (:foreground monokai-red
-                 :weight bold))
+     `(message-header-newsgroups
+       ((,class (:foreground ,yellow
+                             :weight bold))))
 
-  '(js2-jsdoc-tag-face
-    (:foreground monokai-green))
+     `(message-header-subject
+       ((,class (:foreground ,cyan
+                             :weight normal))))
 
-  '(js2-jsdoc-type-face
-    (:foreground monokai-blue))
+     `(message-header-xheader
+       ((,class (:foreground ,cyan))))
 
-  '(js2-jsdoc-value-face
-    (:foreground monokai-purple))
+     `(message-mml
+       ((,class (:foreground ,yellow
+                             :weight bold))))
 
-  '(js2-function-param-face
-    (:foreground monokai-green))
+     `(message-separator
+       ((,class (:foreground ,monokai-comments
+                             :slant italic))))
 
-  '(js2-external-variable-face
-    (:foreground monokai-yellow))
+     ;; mew
+     `(mew-face-header-subject
+       ((,class (:foreground ,orange))))
 
- ;;;;; jabber-mode
+     `(mew-face-header-from
+       ((,class (:foreground ,yellow))))
 
-  '(jabber-roster-user-away
-    (:foreground monokai-purple))
+     `(mew-face-header-date
+       ((,class (:foreground ,green))))
 
-  '(jabber-roster-user-online
-    (:foreground monokai-green))
+     `(mew-face-header-to
+       ((,class (:foreground ,red))))
 
-  '(jabber-roster-user-dnd
-    (:foreground monokai-red))
+     `(mew-face-header-key
+       ((,class (:foreground ,green))))
 
-  '(jabber-rare-time-face
-    (:foreground monokai-purple))
+     `(mew-face-header-private
+       ((,class (:foreground ,green))))
 
-  '(jabber-chat-prompt-local
-    (:foreground monokai-blue))
+     `(mew-face-header-important
+       ((,class (:foreground ,blue))))
 
-  '(jabber-chat-prompt-foreign
-    (:foreground monokai-orange))
+     `(mew-face-header-marginal
+       ((,class (:foreground ,monokai-fg
+                             :weight bold))))
 
-  '(jabber-activity-face
-    (:foreground monokai-red))
+     `(mew-face-header-warning
+       ((,class (:foreground ,red))))
 
-  '(jabber-activity-personal-face
-    (:foreground monokai-cyan))
+     `(mew-face-header-xmew
+       ((,class (:foreground ,green))))
 
-  '(jabber-title-small
-    (:height 1.1 :weight bold))
+     `(mew-face-header-xmew-bad
+       ((,class (:foreground ,red))))
 
-  '(jabber-title-medium
-    (:height 1.2 :weight bold))
+     `(mew-face-body-url
+       ((,class (:foreground ,orange))))
 
-  '(jabber-title-large
-    (:height 1.3 :weight bold))
+     `(mew-face-body-comment
+       ((,class (:foreground ,monokai-fg
+                             :slant italic))))
 
- ;;;;; linum-mode
-  '(linum
-    (:foreground monokai-purple
-                 :background monokai-bg))
+     `(mew-face-body-cite1
+       ((,class (:foreground ,green))))
 
- ;;;;; macrostep
-  '(macrostep-gensym-1
-    (:foreground monokai-green+2
-                 :background monokai-bg-1))
+     `(mew-face-body-cite2
+       ((,class (:foreground ,blue))))
 
-  '(macrostep-gensym-2
-    (:foreground monokai-red+1
-                 :background monokai-bg-1))
+     `(mew-face-body-cite3
+       ((,class (:foreground ,orange))))
 
-  '(macrostep-gensym-3
-    (:foreground monokai-blue+1
-                 :background monokai-bg-1))
+     `(mew-face-body-cite4
+       ((,class (:foreground ,yellow))))
 
-  '(macrostep-gensym-4
-    (:foreground monokai-magenta
-                 :background monokai-bg-1))
+     `(mew-face-body-cite5
+       ((,class (:foreground ,red))))
 
-  '(macrostep-gensym-5
-    (:foreground monokai-yellow
-                 :background monokai-bg-1))
+     `(mew-face-mark-review
+       ((,class (:foreground ,blue))))
 
-  '(macrostep-expansion-highlight-face
-    (:inherit 'highlight))
+     `(mew-face-mark-escape
+       ((,class (:foreground ,green))))
 
-  '(macrostep-macro-face
-    (:underline t))
+     `(mew-face-mark-delete
+       ((,class (:foreground ,red))))
 
- ;;;;; magit
-  '(magit-section-title
-    (:foreground monokai-yellow
-                 :weight bold))
+     `(mew-face-mark-unlink
+       ((,class (:foreground ,yellow))))
 
-  '(magit-branch
-    (:foreground monokai-blue
-                 :weight bold))
+     `(mew-face-mark-refile
+       ((,class (:foreground ,green))))
 
-  '(magit-item-highlight
-    (:background monokai-bg+2))
+     `(mew-face-mark-unread
+       ((,class (:foreground ,red))))
 
- ;;;;; message-mode
-  '(message-cited-text
-    (:inherit 'font-lock-comment))
+     `(mew-face-eof-message
+       ((,class (:foreground ,green))))
 
-  '(message-header-name
-    (:foreground monokai-green+1))
+     `(mew-face-eof-part
+       ((,class (:foreground ,yellow))))
 
-  '(message-header-other
-    (:foreground monokai-green))
+     ;; mingus
+     `(mingus-directory-face
+       ((,class (:foreground ,blue))))
 
-  '(message-header-to
-    (:foreground monokai-fg-1
-                 :weight bold))
+     `(mingus-pausing-face
+       ((,class (:foreground ,magenta))))
 
-  '(message-header-from
-    (:foreground monokai-fg-1
-                 :weight bold))
+     `(mingus-playing-face
+       ((,class (:foreground ,cyan))))
 
-  '(message-header-cc
-    (:foreground monokai-fg-1
-                 :weight bold))
+     `(mingus-playlist-face
+       ((,class (:foreground ,cyan ))))
 
-  '(message-header-newsgroups
-    (:foreground monokai-fg-1
-                 :weight bold))
+     `(mingus-song-file-face
+       ((,class (:foreground ,yellow))))
 
-  '(message-header-subject
-    (:foreground monokai-orange
-                 :weight bold))
+     `(mingus-stopped-face
+       ((,class (:foreground ,red))))
 
-  '(message-header-xheader
-    (:foreground monokai-green))
+     ;; moccur
+     `(moccur-current-line-face
+       ((,class (:underline t))))
 
-  '(message-mml
-    (:foreground monokai-fg-1
-                 :weight bold))
+     `(moccur-edit-done-face
+       ((,class
+         (:foreground ,monokai-comments
+                      :background ,monokai-bg
+                      :slant italic))))
 
-  '(message-separator
-    (:inherit 'font-lock-comment))
+     `(moccur-edit-face
 
- ;;;;; egg
-  '(egg-text-base
-    (:foreground monokai-fg))
+       ((,class (:background ,yellow
+                             :foreground ,monokai-bg))))
 
-  '(egg-help-header-1
-    (:foreground monokai-blue))
+     `(moccur-edit-file-face
+       ((,class (:background ,monokai-hl))))
 
-  '(egg-help-header-2
-    (:foreground monokai-green))
+     `(moccur-edit-reject-face
+       ((,class (:foreground ,red))))
 
-  '(egg-branch
-    (:foreground monokai-blue))
+     `(moccur-face
+       ((,class (:background ,monokai-hl
+                             :foreground ,monokai-emph
+                             :weight bold))))
 
-  '(egg-branch-mono
-    (:foreground monokai-blue))
+     `(search-buffers-face
+       ((,class (:background ,monokai-hl
+                             :foreground ,monokai-emph
+                             :weight bold))))
 
-  '(egg-term
-    (:foreground monokai-blue))
+     `(search-buffers-header-face
+       ((,class (:background ,monokai-hl
+                             :foreground ,yellow
+                             :weight bold))))
 
-  '(egg-diff-add
-    (:foreground monokai-green+1))
+     ;; mu4e
+     `(mu4e-cited-1-face
+       ((,class (:foreground ,green
+                             :slant italic
+                             :weight normal))))
 
-  '(egg-diff-del
-    (:foreground monokai-red+1))
+     `(mu4e-cited-2-face
+       ((,class (:foreground ,blue
+                             :slant italic
+                             :weight normal))))
 
-  '(egg-diff-file-header
-    (:foreground monokai-fg-1))
+     `(mu4e-cited-3-face
+       ((,class (:foreground ,orange
+                             :slant italic
+                             :weight normal))))
 
-  '(egg-section-title
-    (:foreground monokai-blue))
+     `(mu4e-cited-4-face
+       ((,class (:foreground ,yellow
+                             :slant italic
+                             :weight normal))))
 
-  '(egg-stash-mono
-    (:foreground monokai-purple))
+     `(mu4e-cited-5-face
+       ((,class (:foreground ,cyan
+                             :slant italic
+                             :weight normal))))
 
- ;;;;; message-mode
-  '(message-cited-text
-    (:inherit 'font-lock-comment))
+     `(mu4e-cited-6-face
+       ((,class (:foreground ,green
+                             :slant italic
+                             :weight normal))))
 
-  '(message-header-name
-    (:foreground monokai-green+1))
+     `(mu4e-cited-7-face
+       ((,class (:foreground ,blue
+                             :slant italic
+                             :weight normal))))
 
-  '(message-header-other
-    (:foreground monokai-green))
+     `(mu4e-flagged-face
+       ((,class (:foreground ,magenta
+                             :weight bold))))
 
-  '(message-header-to
-    (:foreground monokai-yellow
-                 :weight bold))
+     `(mu4e-view-url-number-face
+       ((,class (:foreground ,yellow
+                             :weight normal))))
 
-  '(message-header-from
-    (:foreground monokai-yellow
-                 :weight bold))
+     `(mu4e-warning-face
+       ((,class (:foreground ,red
+                             :slant normal
+                             :weight bold))))
 
-  '(message-header-cc
-    (:foreground monokai-yellow
-                 :weight bold))
+     `(mu4e-header-highlight-face
+       ((,class (:inherit unspecified
+                          :foreground unspecified
+                          :background ,monokai-hl
+                          :underline ,monokai-emph
+                          :weight normal))))
 
-  '(message-header-newsgroups
-    (:foreground monokai-yellow
-                 :weight bold))
 
-  '(message-header-subject
-    (:foreground monokai-orange
-                 :weight bold))
+     `(mu4e-draft-face
+       ((,class (:inherit font-lock-string-face))))
 
-  '(message-header-xheader
-    (:foreground monokai-green))
+     `(mu4e-footer-face
+       ((,class (:inherit font-lock-comment-face))))
 
-  '(message-mml
-    (:foreground monokai-yellow
-                 :weight bold))
+     `(mu4e-forwarded-face
+       ((,class (:inherit font-lock-builtin-face
+                          :weight normal))))
+
+     `(mu4e-header-face
+       ((,class (:inherit default))))
+
+     `(mu4e-header-marks-face
+       ((,class (:inherit font-lock-preprocessor-face))))
+
+     `(mu4e-header-title-face
+       ((,class (:inherit font-lock-type-face))))
+
+     `(mu4e-highlight-face
+       ((,class (:inherit font-lock-pseudo-keyword-face
+                          :weight bold))))
+
+     `(mu4e-moved-face
+       ((,class (:inherit font-lock-comment-face
+                          :slant italic))))
+
+     `(mu4e-ok-face
+       ((,class (:inherit font-lock-comment-face
+                          :slant normal
+                          :weight bold))))
+
+     `(mu4e-replied-face
+       ((,class (:inherit font-lock-builtin-face
+                          :weight normal))))
+
+     `(mu4e-system-face
+       ((,class (:inherit font-lock-comment-face
+                          :slant italic))))
+
+     `(mu4e-title-face
+       ((,class (:inherit font-lock-type-face
+                          :weight bold))))
+
+     `(mu4e-trashed-face
+       ((,class (:inherit font-lock-comment-face
+                          :strike-through t))))
+
+     `(mu4e-unread-face
+       ((,class (:inherit font-lock-keyword-face
+                          :weight bold))))
+
+     `(mu4e-view-attach-number-face
+       ((,class (:inherit font-lock-variable-name-face
+                          :weight bold))))
+
+     `(mu4e-view-contact-face
+       ((,class (:foreground ,monokai-fg
+                             :weight normal))))
+
+     `(mu4e-view-header-key-face
+       ((,class (:inherit message-header-name
+                          :weight normal))))
+
+     `(mu4e-view-header-value-face
+       ((,class (:foreground ,cyan
+                             :weight normal
+                             :slant normal))))
+
+     `(mu4e-view-link-face
+       ((,class (:inherit link))))
+
+     `(mu4e-view-special-header-value-face
+       ((,class (:foreground ,blue
+                             :weight normal
+                             :underline nil))))
+
+     ;; mumamo
+     `(mumamo-background-chunk-submode1
+       ((,class (:background ,monokai-hl))))
+
+     ;; nav
+     `(nav-face-heading
+       ((,class (:foreground ,yellow))))
+
+     `(nav-face-button-num
+       ((,class (:foreground ,cyan))))
+
+     `(nav-face-dir
+       ((,class (:foreground ,green))))
+
+     `(nav-face-hdir
+       ((,class (:foreground ,red))))
+
+     `(nav-face-file
+       ((,class (:foreground ,monokai-fg))))
+
+     `(nav-face-hfile
+       ((,class (:foreground ,red))))
+
+     ;; nav-flash
+     `(nav-flash-face
+       ((,class (:background ,monokai-hl))))
+
+     ;; org-mode
+     `(org-agenda-structure
+       ((,class (:foreground ,monokai-emph
+                             :background ,monokai-hl
+                             :weight bold
+                             :slant normal
+                             :inverse-video nil
+                             :height ,monokai-height-plus-1
+                             :underline nil
+                             :box (:line-width 2 :color ,monokai-bg)))))
+
+     `(org-agenda-calendar-event
+       ((,class (:foreground ,monokai-emph))))
+
+     `(org-agenda-calendar-sexp
+       ((,class (:foreground ,monokai-fg
+                             :slant italic))))
+
+     `(org-agenda-date
+       ((,class (:foreground ,monokai-comments
+                             :background ,monokai-bg
+                             :weight normal
+                             :inverse-video nil
+                             :overline nil
+                             :slant normal
+                             :height 1.0
+                             :box (:line-width 2 :color ,monokai-bg)))) t)
+
+     `(org-agenda-date-weekend
+       ((,class (:inherit org-agenda-date
+                          :inverse-video nil
+                          :background unspecified
+                          :foreground ,monokai-comments
+                          :weight unspecified
+                          :underline t
+                          :overline nil
+                          :box unspecified))) t)
+
+     `(org-agenda-date-today
+       ((,class (:inherit org-agenda-date
+                          :inverse-video t
+                          :weight bold
+                          :underline unspecified
+                          :overline nil
+                          :box unspecified
+                          :foreground ,blue
+                          :background ,monokai-bg))) t)
+
+     `(org-agenda-done
+       ((,class (:foreground ,monokai-comments
+                             :slant italic))) t)
+
+     `(org-archived
+       ((,class (:foreground ,monokai-comments
+                             :weight normal))))
+
+     `(org-block
+       ((,class (:foreground ,monokai-comments))))
+
+     `(org-block-begin-line
+       ((,class (:foreground ,monokai-comments
+                             :slant italic))))
+
+     `(org-checkbox
+       ((,class (:background ,monokai-bg
+                             :foreground ,monokai-fg
+                             :box (:line-width 1 :style released-button)))))
+
+     `(org-code
+       ((,class (:foreground ,monokai-comments))))
+
+     `(org-date
+       ((,class (:foreground ,blue :underline t))))
+
+     `(org-done
+       ((,class (:weight bold :foreground ,green))))
+
+     `(org-ellipsis
+       ((,class (:foreground ,monokai-comments))))
+
+     `(org-formula
+       ((,class (:foreground ,yellow))))
+
+     `(org-headline-done
+       ((,class (:foreground ,green))))
+
+     `(org-hide
+       ((,class (:foreground ,monokai-bg))))
+
+     `(org-level-1
+       ((,class (:inherit ,s-variable-pitch
+                          :height ,monokai-height-plus-4
+                          :foreground ,orange))))
+
+     `(org-level-2
+       ((,class (:inherit ,s-variable-pitch
+                          :height ,monokai-height-plus-3
+                          :foreground ,green))))
+
+     `(org-level-3
+       ((,class (:inherit ,s-variable-pitch
+                          :height ,monokai-height-plus-2
+                          :foreground ,blue))))
+
+     `(org-level-4
+       ((,class (:inherit ,s-variable-pitch
+                          :height ,monokai-height-plus-1
+                          :foreground ,yellow))))
+
+     `(org-level-5
+       ((,class (:inherit ,s-variable-pitch
+                          :foreground ,cyan))))
+
+     `(org-level-6
+       ((,class (:inherit ,s-variable-pitch
+                          :foreground ,green))))
+
+     `(org-level-7
+       ((,class (:inherit ,s-variable-pitch
+                          :foreground ,red))))
+
+     `(org-level-8
+       ((,class (:inherit ,s-variable-pitch
+                          :foreground ,blue))))
+
+     `(org-link
+       ((,class (:foreground ,yellow
+                             :underline t))))
+
+     `(org-sexp-date
+       ((,class (:foreground ,violet))))
+
+     `(org-scheduled
+       ((,class (:foreground ,green))))
 
-  '(message-separator
-    (:inherit 'font-lock-comment))
+     `(org-scheduled-previously
+       ((,class (:foreground ,cyan))))
 
- ;;;;; mew
-  '(mew-face-header-subject
-    (:foreground monokai-orange))
+     `(org-scheduled-today
+       ((,class (:foreground ,blue
+                             :weight normal))))
 
-  '(mew-face-header-from
-    (:foreground monokai-yellow))
+     `(org-special-keyword
+       ((,class (:foreground ,monokai-comments
+                             :weight bold))))
 
-  '(mew-face-header-date
-    (:foreground monokai-green))
+     `(org-table
+       ((,class (:foreground ,green))))
 
-  '(mew-face-header-to
-    (:foreground monokai-red))
+     `(org-tag
+       ((,class (:weight bold))))
 
-  '(mew-face-header-key
-    (:foreground monokai-blue))
+     `(org-time-grid
+       ((,class (:foreground ,monokai-comments))))
 
-  '(mew-face-header-private
-    (:foreground monokai-purple))
+     `(org-todo
+       ((,class (:foreground ,red
+                             :weight bold))))
 
-  '(mew-face-header-important
-    (:foreground monokai-blue))
+     `(org-upcoming-deadline
+       ((,class (:foreground ,yellow
+                             :weight normal
+                             :underline nil))))
 
-  '(mew-face-header-marginal
-    (:foreground monokai-fg
-                 :weight bold))
+     `(org-warning
+       ((,class (:foreground ,orange
+                             :weight normal
+                             :underline nil))))
 
-  '(mew-face-header-warning
-    (:foreground monokai-yellow-1))
+     ;; org-habit (clear=blue, ready=green, alert=yellow, overdue=red. 
future=lower contrast)
+     `(org-habit-clear-face
+       ((,class (:background ,blue-lc
+                             :foreground ,blue-hc))))
 
-  '(mew-face-header-xmew
-    (:foreground monokai-green))
+     `(org-habit-clear-future-face
+       ((,class (:background ,blue-lc))))
 
-  '(mew-face-header-xmew-bad
-    (:foreground monokai-red))
+     `(org-habit-ready-face
+       ((,class (:background ,green-lc
+                             :foreground ,green))))
 
-  '(mew-face-body-url
-    (:foreground monokai-blue))
+     `(org-habit-ready-future-face
+       ((,class (:background ,green-lc))))
 
-  '(mew-face-body-comment
-    (:foreground monokai-fg-1
-                 :slant italic))
+     `(org-habit-alert-face
+       ((,class (:background ,yellow
+                             :foreground ,yellow-lc))))
 
-  '(mew-face-body-cite1
-    (:foreground monokai-cyan))
+     `(org-habit-alert-future-face
+       ((,class (:background ,yellow-lc))))
 
-  '(mew-face-body-cite2
-    (:foreground monokai-purple))
+     `(org-habit-overdue-face
+       ((,class (:background ,red
+                             :foreground ,red-lc))))
 
-  '(mew-face-body-cite3
-    (:foreground monokai-orange))
+     `(org-habit-overdue-future-face
+       ((,class (:background ,red-lc))))
 
-  '(mew-face-body-cite4
-    (:foreground monokai-yellow))
+     ;; latest additions
+     `(org-agenda-dimmed-todo-face
+       ((,class (:foreground ,monokai-comments))))
 
-  '(mew-face-body-cite5
-    (:foreground monokai-red))
+     `(org-agenda-restriction-lock
+       ((,class (:background ,yellow))))
 
-  '(mew-face-mark-review
-    (:foreground monokai-blue))
+     `(org-clock-overlay
+       ((,class (:background ,yellow))))
 
-  '(mew-face-mark-escape
-    (:foreground monokai-green))
+     `(org-column
+       ((,class (:background ,monokai-hl
+                             :strike-through nil
+                             :underline nil
+                             :slant normal
+                             :weight normal
+                             :inherit default))))
 
-  '(mew-face-mark-delete
-    (:foreground monokai-red))
+     `(org-column-title
+       ((,class (:background ,monokai-hl
+                             :underline t
+                             :weight bold))))
 
-  '(mew-face-mark-unlink
-    (:foreground monokai-yellow))
+     `(org-date-selected
+       ((,class (:foreground ,red
+                             :inverse-video t))))
 
-  '(mew-face-mark-refile
-    (:foreground monokai-orange))
+     `(org-document-info
+       ((,class (:foreground ,monokai-fg))))
 
-  '(mew-face-mark-unread
-    (:foreground monokai-purple))
+     `(org-document-title
+       ((,class (:foreground ,monokai-emph
+                             :weight bold
+                             :height ,monokai-height-plus-4))))
 
-  '(mew-face-eof-message
-    (:foreground monokai-red))
+     `(org-drawer
+       ((,class (:foreground ,cyan))))
 
-  '(mew-face-eof-part
-    (:foreground monokai-yellow))
+     `(org-footnote
+       ((,class (:foreground ,magenta
+                             :underline t))))
 
- ;;;;; mic-paren
-  '(paren-face-match
-    (:foreground monokai-bg-1
-                 :background monokai-orange
-                 :weight bold))
+     `(org-latex-and-export-specials
+       ((,class (:foreground ,orange))))
 
-  '(paren-face-mismatch
-    (:foreground monokai-bg-1
-                 :background monokai-magenta
-                 :weight bold))
+     `(org-mode-line-clock-overrun
+       ((,class (:inherit mode-line
+                          :background ,red))))
 
-  '(paren-face-no-match
-    (:foreground monokai-bg-1
-                 :background monokai-purple
-                 :weight bold))
+     ;; outline
+     `(outline-1
+       ((,class (:inherit org-level-1))))
 
- ;;;;; mingus
-  '(mingus-directory-face
-    (:foreground monokai-blue))
+     `(outline-2
+       ((,class (:inherit org-level-2))))
 
-  '(mingus-pausing-face
-    (:foreground monokai-magenta))
+     `(outline-3
+       ((,class (:inherit org-level-3))))
 
-  '(mingus-playing-face
-    (:foreground monokai-cyan))
+     `(outline-4
+       ((,class (:inherit org-level-4))))
 
-  '(mingus-playlist-face
-    (:foreground monokai-cyan ))
+     `(outline-5
+       ((,class (:inherit org-level-5))))
 
-  '(mingus-song-file-face
-    (:foreground monokai-yellow))
+     `(outline-6
+       ((,class (:inherit org-level-6))))
 
-  '(mingus-stopped-face
-    (:foreground monokai-red))
+     `(outline-7
+       ((,class (:inherit org-level-7))))
 
- ;;;;; nav
-  '(nav-face-heading
-    (:foreground monokai-fg-1))
+     `(outline-8
+       ((,class (:inherit org-level-8))))
 
-  '(nav-face-button-num
-    (:foreground monokai-blue))
+     ;; parenfaceu
+     `(paren-face
+       ((,class (:foreground ,monokai-comments))))
 
-  '(nav-face-dir
-    (:foreground monokai-green))
+     ;; pretty-mode
+     `(pretty-mode-symbol-face
+       ((,class (:foreground ,yellow
+                             :weight normal))))
 
-  '(nav-face-hdir
-    (:foreground monokai-red))
+     ;; popup
+     `(popup-face
+       ((,class (:background ,monokai-hl
+                             :foreground ,monokai-fg))))
 
-  '(nav-face-file
-    (:foreground monokai-fg))
+     `(popup-isearch-match
+       ((,class (:background ,yellow
+                             :foreground ,monokai-bg))))
 
-  '(nav-face-hfile
-    (:foreground monokai-purple))
+     `(popup-menu-face
+       ((,class (:background ,monokai-hl
+                             :foreground ,monokai-fg))))
 
- ;;;;; mu4e
-  '(mu4e-cited-1-face
-    (:foreground monokai-blue
-                 :slant italic))
+     `(popup-menu-mouse-face
+       ((,class (:background ,blue
+                             :foreground ,monokai-fg))))
 
-  '(mu4e-cited-2-face
-    (:foreground monokai-purple
-                 :slant italic))
+     `(popup-menu-selection-face
+       ((,class (:background ,magenta
+                             :foreground ,monokai-bg))))
 
-  '(mu4e-cited-3-face
-    (:foreground monokai-cyan
-                 :slant italic))
+     `(popup-scroll-bar-background-face
+       ((,class (:background ,monokai-comments))))
 
-  '(mu4e-cited-4-face
-    (:foreground monokai-green
-                 :slant italic))
+     `(popup-scroll-bar-foreground-face
+       ((,class (:background ,monokai-emph))))
 
-  '(mu4e-cited-5-face
-    (:foreground monokai-orange
-                 :slant italic))
+     `(popup-tip-face
+       ((,class (:background ,monokai-hl
+                             :foreground ,monokai-fg))))
 
-  '(mu4e-cited-6-face
-    (:foreground monokai-purple
-                 :slant italic))
+     ;; rainbow-delimiters
+     `(rainbow-delimiters-depth-1-face
+       ((,class (:foreground ,cyan))))
 
-  '(mu4e-cited-7-face
-    (:foreground monokai-yellow
-                 :slant italic))
+     `(rainbow-delimiters-depth-2-face
+       ((,class (:foreground ,yellow))))
 
-  '(mu4e-replied-face
-    (:foreground monokai-fg-1))
+     `(rainbow-delimiters-depth-3-face
+       ((,class (:foreground ,blue))))
 
-  '(mu4e-trashed-face
-    (:foreground monokai-fg-1
-                 :strike-through t))
+     `(rainbow-delimiters-depth-4-face
+       ((,class (:foreground ,orange))))
 
- ;;;;; mumamo
-  '(mumamo-background-chunk-major
-    (:background nil))
+     `(rainbow-delimiters-depth-5-face
+       ((,class (:foreground ,green))))
 
-  '(mumamo-background-chunk-submode1
-    (:background monokai-bg-1))
+     `(rainbow-delimiters-depth-6-face
+       ((,class (:foreground ,yellow))))
 
-  '(mumamo-background-chunk-submode2
-    (:background monokai-bg+2))
+     `(rainbow-delimiters-depth-7-face
+       ((,class (:foreground ,blue))))
 
-  '(mumamo-background-chunk-submode3
-    (:background monokai-fg-1))
+     `(rainbow-delimiters-depth-8-face
+       ((,class (:foreground ,orange))))
 
-  '(mumamo-background-chunk-submode4
-    (:background monokai-bg+2))
+     `(rainbow-delimiters-depth-9-face
+       ((,class (:foreground ,green))))
 
- ;;;;; org-mode
-  '(org-agenda-date-today
-    (:foreground monokai-fg+1
-                 :slant italic
-                 :weight bold))
+     `(rainbow-delimiters-depth-10-face
+       ((,class (:foreground ,yellow))))
 
-  '(org-agenda-structure
-    (:inherit 'font-lock-comment-face))
+     `(rainbow-delimiters-depth-11-face
+       ((,class (:foreground ,blue))))
 
-  '(org-archived
-    (:foreground monokai-fg
-                 :weight bold))
+     `(rainbow-delimiters-depth-12-face
+       ((,class (:foreground ,orange))))
 
-  '(org-checkbox
-    (:background monokai-bg+2
-                 :foreground monokai-fg+1
-                 :box (:line-width 1 :style released-button)))
-  '(org-date
-    (:foreground monokai-blue
-                 :underline t))
+     `(rainbow-delimiters-unmatched-face
+       ((,class (:foreground ,monokai-fg
+                             :background ,monokai-bg
+                             :inverse-video t))))
 
-  '(org-deadline-announce
-    (:foreground monokai-red))
+     ;; rhtm-mode
+     `(erb-face
+       ((,class (:foreground ,monokai-emph
+                             :background ,monokai-bg))))
 
-  '(org-done
-    (:foreground monokai-green+1
-                 :weight bold))
-  '(org-formula
-    (:foreground monokai-yellow))
+     `(erb-delim-face
+       ((,class (:foreground ,cyan
+                             :background ,monokai-bg))))
 
-  '(org-headline-done
-    (:foreground monokai-green+1))
+     `(erb-exec-face
+       ((,class (:foreground ,monokai-emph
+                             :background ,monokai-bg))))
 
-  '(org-hide
-    (:foreground monokai-bg-1))
+     `(erb-exec-delim-face
+       ((,class (:foreground ,cyan
+                             :background ,monokai-bg))))
 
-  '(org-level-1
-    (:foreground monokai-orange))
+     `(erb-out-face
+       ((,class (:foreground ,monokai-emph
+                             :background ,monokai-bg))))
 
-  '(org-level-2
-    (:foreground monokai-orange+1))
+     `(erb-out-delim-face
+       ((,class (:foreground ,cyan
+                             :background ,monokai-bg))))
 
-  '(org-level-3
-    (:foreground monokai-cyan))
+     `(erb-comment-face
+       ((,class (:foreground ,monokai-emph
+                             :background ,monokai-bg))))
 
-  '(org-level-4
-    (:foreground monokai-cyan+1))
+     `(erb-comment-delim-face
+       ((,class (:foreground ,cyan
+                             :background ,monokai-bg))))
 
-  '(org-level-5
-    (:foreground monokai-purple))
 
-  '(org-level-6
-    (:foreground monokai-purple+1))
+     ;; rst-mode
+     `(rst-level-1-face
+       ((,class (:background ,yellow
+                             :foreground ,monokai-bg))))
 
-  '(org-level-7
-    (:foreground monokai-red+1))
+     `(rst-level-2-face
+       ((,class (:background ,cyan
+                             :foreground ,monokai-bg))))
 
-  '(org-level-8
-    (:foreground monokai-red+2))
+     `(rst-level-3-face
+       ((,class (:background ,blue
+                             :foreground ,monokai-bg))))
 
-  '(org-link
-    (:foreground monokai-blue
-                 :underline t))
+     `(rst-level-4-face
+       ((,class (:background ,violet
+                             :foreground ,monokai-bg))))
 
-  '(org-scheduled
-    (:foreground monokai-purple+1))
+     `(rst-level-5-face
+       ((,class (:background ,magenta
+                             :foreground ,monokai-bg))))
 
-  '(org-scheduled-previously
-    (:foreground monokai-red))
+     `(rst-level-6-face
+       ((,class (:background ,red
+                             :foreground ,monokai-bg))))
 
-  '(org-scheduled-today
-    (:foreground monokai-blue+1))
+     ;; rpm-mode
+     `(rpm-spec-dir-face
+       ((,class (:foreground ,green))))
 
-  '(org-special-keyword
-    (:foreground monokai-fg-1))
+     `(rpm-spec-doc-face
+       ((,class (:foreground ,green))))
 
-  '(org-table
-    (:foreground monokai-purple))
+     `(rpm-spec-ghost-face
+       ((,class (:foreground ,red))))
 
-  '(org-tag
-    (:weight bold))
+     `(rpm-spec-macro-face
+       ((,class (:foreground ,yellow))))
 
-  '(org-time-grid
-    (:foreground monokai-orange))
+     `(rpm-spec-obsolete-tag-face
+       ((,class (:foreground ,red))))
 
-  '(org-todo
-    (:foreground monokai-red
-                 :weight bold))
+     `(rpm-spec-package-face
+       ((,class (:foreground ,red))))
 
-  '(org-upcoming-deadline
-    (:inherit 'font-lock-keyword-face))
+     `(rpm-spec-section-face
+       ((,class (:foreground ,yellow))))
 
-  '(org-warning
-    (:foreground monokai-yellow-1
-                 :weight bold
-                 :underline t))
+     `(rpm-spec-tag-face
+       ((,class (:foreground ,blue))))
 
-  '(org-column
-    (:background monokai-bg-1))
+     `(rpm-spec-var-face
+       ((,class (:foreground ,red))))
 
-  '(org-column-title
-    (:background monokai-bg-1
-                 :underline t
-                 :weight bold))
+     ;; sh-mode
+     `(sh-quoted-exec
+       ((,class (:foreground ,violet :weight bold))))
 
- ;;;;; outline
-  '(outline-1
-    (:foreground monokai-orange))
+     `(sh-escaped-newline
+       ((,class (:foreground ,yellow :weight bold))))
 
-  '(outline-2
-    (:foreground monokai-magenta))
+     `(sh-heredoc
+       ((,class (:foreground ,yellow :weight bold))))
+
+     ;; smartparens
+     `(sp-pair-overlay-face
+       ((,class (:background ,monokai-hl))))
+
+     `(sp-wrap-overlay-face
+       ((,class (:background ,monokai-hl))))
+
+     `(sp-wrap-tag-overlay-face
+       ((,class (:background ,monokai-hl))))
+
+     `(sp-show-pair-enclosing
+       ((,class (:inherit highlight))))
+
+     `(sp-show-pair-match-face
+
+       ((,class (:foreground ,cyan
+                             :background ,monokai-bg
+                             :weight normal
+                             :inverse-video t))))
+
+     `(sp-show-pair-mismatch-face
+       ((,class (:foreground ,red
+                             :background ,monokai-bg
+                             :weight normal
+                             :inverse-video t))))
+
+     ;; show-paren
+     `(show-paren-match
+       ((,class (:foreground ,cyan
+                             :background ,monokai-bg
+                             :weight normal
+                             :inverse-video t))))
+
+     `(show-paren-mismatch
+       ((,class (:foreground ,red
+                             :background ,monokai-bg
+                             :weight normal
+                             :inverse-video t))))
+
+     ;; mic-paren
+     `(paren-face-match
+
+       ((,class (:foreground ,cyan
+                             :background ,monokai-bg
+                             :weight normal
+                             :inverse-video t))))
+
+     `(paren-face-mismatch
+       ((,class (:foreground ,red
+                             :background ,monokai-bg
+                             :weight normal
+                             :inverse-video t))))
+
+     `(paren-face-no-match
+       ((,class (:foreground ,red
+                             :background ,monokai-bg
+                             :weight normal
+                             :inverse-video t))))
+
+     ;; SLIME
+     `(slime-repl-inputed-output-face
+       ((,class (:foreground ,red))))
+
+     ;; speedbar
+     `(speedbar-button-face
+       ((,class (:inherit ,s-variable-pitch
+                          :foreground ,monokai-comments))))
+
+     `(speedbar-directory-face
+       ((,class (:inherit ,s-variable-pitch
+                          :foreground ,blue))))
+
+     `(speedbar-file-face
+       ((,class (:inherit ,s-variable-pitch
+                          :foreground ,monokai-fg))))
+
+     `(speedbar-highlight-face
+       ((,class (:inherit ,s-variable-pitch
+                          :background ,monokai-hl))))
+
+     `(speedbar-selected-face
+       ((,class (:inherit ,s-variable-pitch
+                          :foreground ,yellow
+                          :underline t))))
+
+     `(speedbar-separator-face
+       ((,class (:inherit ,s-variable-pitch
+                          :background ,blue
+                          :foreground ,monokai-bg
+                          :overline ,cyan-lc))))
+
+     `(speedbar-tag-face
+       ((,class (:inherit ,s-variable-pitch
+                          :foreground ,green))))
+
+     ;; sunrise commander headings
+     `(sr-active-path-face
+       ((,class (:background ,blue
+                             :foreground ,monokai-bg
+                             :height ,monokai-height-plus-1
+                             :weight bold))))
+
+     `(sr-editing-path-face
+       ((,class (:background ,yellow
+                             :foreground ,monokai-bg
+                             :weight bold
+                             :height ,monokai-height-plus-1))))
+
+     `(sr-highlight-path-face
+       ((,class (:background ,green
+                             :foreground ,monokai-bg
+                             :weight bold
+                             :height ,monokai-height-plus-1))))
+
+     `(sr-passive-path-face
+       ((,class (:background ,monokai-comments
+                             :foreground ,monokai-bg
+                             :weight bold
+                             :height ,monokai-height-plus-1))))
+
+     ;; sunrise commander marked
+     `(sr-marked-dir-face
+       ((,class (:inherit dired-marked))))
+
+     `(sr-marked-file-face
+       ((,class (:inherit dired-marked))))
+
+     `(sr-alt-marked-dir-face
+       ((,class (:background ,magenta
+                             :foreground ,monokai-bg
+                             :weight bold))))
+
+     `(sr-alt-marked-file-face
+       ((,class (:background ,magenta
+                             :foreground ,monokai-bg
+                             :weight bold))))
+
+     ;; sunrise commander fstat
+     `(sr-directory-face
+       ((,class (:inherit dired-directory
+                          :weight normal))))
+
+     `(sr-symlink-directory-face
+       ((,class (:inherit dired-directory
+                          :slant italic
+                          :weight normal))))
+
+     `(sr-symlink-face
+       ((,class (:inherit dired-symlink
+                          :slant italic
+                          :weight normal))))
+
+     `(sr-broken-link-face
+       ((,class (:inherit dired-warning
+                          :slant italic
+                          :weight normal))))
+
+     ;; sunrise commander file types
+     `(sr-compressed-face
+       ((,class (:foreground ,monokai-fg))))
+
+     `(sr-encrypted-face
+       ((,class (:foreground ,monokai-fg))))
+
+     `(sr-log-face
+       ((,class (:foreground ,monokai-fg))))
+
+     `(sr-packaged-face
+       ((,class (:foreground ,monokai-fg))))
+
+     `(sr-html-face
+       ((,class (:foreground ,monokai-fg))))
+
+     `(sr-xml-face
+       ((,class (:foreground ,monokai-fg))))
+
+     ;; sunrise commander misc
+     `(sr-clex-hotchar-face
+       ((,class (:background ,red
+                             :foreground ,monokai-bg
+                             :weight bold))))
+
+     ;; table
+     `(table-cell
+       ((,class (:foreground ,monokai-fg
+                             :background ,monokai-hl))))
+
+     ;; term
+     `(term-color-black
+       ((t (:foreground ,monokai-bg
+                        :background ,monokai-hl))))
+
+     `(term-color-red
+       ((t (:foreground ,red
+                        :background ,red-d))))
+
+     `(term-color-green
+       ((t (:foreground ,green
+                        :background ,green-d))))
 
-  '(outline-3
-    (:foreground monokai-blue))
+     `(term-color-yellow
+       ((t (:foreground ,yellow
+                        :background ,yellow-d))))
 
-  '(outline-4
-    (:foreground monokai-yellow))
+     `(term-color-blue
+       ((t (:foreground ,blue
+                        :background ,blue-d))))
 
-  '(outline-5
-    (:foreground monokai-cyan))
+     `(term-color-magenta
+       ((t (:foreground ,magenta
+                        :background ,magenta-d))))
 
-  '(outline-6
-    (:foreground monokai-purple))
+     `(term-color-cyan
+       ((t (:foreground ,cyan
+                        :background ,cyan-d))))
 
-  '(outline-7
-    (:foreground monokai-red))
+     `(term-color-white
+       ((t (:foreground ,monokai-emph
+                        :background ,monokai-fg))))
 
-  '(outline-8
-    (:foreground monokai-green))
+     '(term-default-fg-color
+       ((t (:inherit term-color-white))))
 
- ;;;;; rainbow-delimiters
-  '(rainbow-delimiters-depth-1-face
-    (:foreground monokai-orange))
+     '(term-default-bg-color
+       ((t (:inherit term-color-black))))
 
-  '(rainbow-delimiters-depth-2-face
-    (:foreground monokai-blue))
+     ;; tooltip. (NOTE: This setting has no effect on the os widgets for me
+     ;; zencoding uses this)
+     `(tooltip
+       ((,class (:background ,yellow-lc
+                             :foreground ,yellow-hc
+                             :inherit ,s-variable-pitch))))
 
-  '(rainbow-delimiters-depth-3-face
-    (:foreground monokai-purple))
+     ;; tuareg
+     `(tuareg-font-lock-governing-face
+       ((,class (:foreground ,magenta
+                             :weight bold))))
 
-  '(rainbow-delimiters-depth-4-face
-    (:foreground monokai-green))
 
-  '(rainbow-delimiters-depth-5-face
-    (:foreground monokai-cyan))
+     `(tuareg-font-lock-multistage-face
+       ((,class (:foreground ,blue
+                             :background ,monokai-hl
+                             :weight bold))))
 
-  '(rainbow-delimiters-depth-6-face
-    (:foreground monokai-red))
+     `(tuareg-font-lock-operator-face
+       ((,class (:foreground ,monokai-emph))))
 
-  '(rainbow-delimiters-depth-7-face
-    (:foreground monokai-orange))
+     `(tuareg-font-lock-error-face
+       ((,class (:foreground ,yellow
+                             :background ,red
+                             :weight bold))))
 
-  '(rainbow-delimiters-depth-8-face
-    (:foreground monokai-blue+1))
+     `(tuareg-font-lock-interactive-output-face
+       ((,class (:foreground ,cyan))))
 
-  '(rainbow-delimiters-depth-9-face
-    (:foreground monokai-red+1))
+     `(tuareg-font-lock-interactive-error-face
+       ((,class (:foreground ,red))))
 
-  '(rainbow-delimiters-depth-10-face
-    (:foreground monokai-green+1))
 
-  '(rainbow-delimiters-depth-11-face
-    (:foreground monokai-purple+1))
+     ;; undo-tree
+     `(undo-tree-visualizer-default-face
+       ((,class (:foreground ,monokai-comments
+                             :background ,monokai-bg))))
 
-  '(rainbow-delimiters-depth-12-face
-    (:foreground monokai-orange+1))
+     `(undo-tree-visualizer-unmodified-face
+       ((,class (:foreground ,green))))
 
- ;;;;;rcirc
-  '(rcirc-my-nick
-    (:foreground monokai-blue))
+     `(undo-tree-visualizer-current-face
+       ((,class (:foreground ,blue
+                             :inverse-video t))))
 
-  '(rcirc-other-nick
-    (:foreground monokai-orange))
+     `(undo-tree-visualizer-active-branch-face
+       ((,class (:foreground ,monokai-emph
+                             :background ,monokai-bg
+                             :weight bold))))
 
-  '(rcirc-bright-nick
-    (:foreground monokai-blue+1))
+     `(undo-tree-visualizer-register-face
+       ((,class (:foreground ,yellow))))
 
-  '(rcirc-dim-nick
-    (:foreground monokai-blue-1))
+     ;; volatile highlights
+     `(vhl/default-face
+       ((,class (:background ,green-lc
+                             :foreground ,green-hc))))
 
-  '(rcirc-server
-    (:foreground monokai-green))
+     ;; w3m
+     `(w3m-anchor
+       ((,class (:inherit link))))
 
-  '(rcirc-server-prefix
-    (:foreground monokai-green+1))
+     `(w3m-arrived-anchor
+       ((,class (:inherit link-visited))))
 
-  '(rcirc-timestamp
-    (:foreground monokai-purple))
+     `(w3m-form
+       ((,class (:background ,monokai-bg
+                             :foreground ,monokai-fg))))
 
-  '(rcirc-nick-in-message
-    (:foreground monokai-yellow))
+     `(w3m-header-line-location-title
 
-  '(rcirc-nick-in-message-full-line
-    (:bold t))
+       ((,class (:background ,monokai-hl
+                             :foreground ,yellow))))
 
-  '(rcirc-prompt
-    (:foreground monokai-fg-1
-                 :bold t))
+     `(w3m-header-line-location-content
 
-  '(rcirc-track-nick
-    (:inverse-video t))
+       ((,class (:background ,monokai-hl
+                             :foreground ,monokai-fg))))
 
-  '(rcirc-track-keyword
-    (:bold t))
+     `(w3m-bold
+       ((,class (:foreground ,monokai-emph
+                             :weight bold))))
 
-  '(rcirc-url
-    (:bold t))
+     `(w3m-image-anchor
+       ((,class (:background ,monokai-bg
+                             :foreground ,cyan
+                             :inherit link))))
 
-  '(rcirc-keyword
-    (:foreground monokai-red
-                 :bold t))
+     `(w3m-image
+       ((,class (:background ,monokai-bg
+                             :foreground ,cyan))))
 
- ;;;;; rhtml-mode
-  '(erb-face
-    (:foreground monokai-fg+1
-                 :background monokai-bg-1))
+     `(w3m-lnum-minibuffer-prompt
+       ((,class (:foreground ,monokai-emph))))
 
-  '(erb-delim-face
-    (:foreground monokai-cyan-1
-                 :background monokai-bg-1))
+     `(w3m-lnum-match
+       ((,class (:background ,monokai-hl))))
 
-  '(erb-exec-face
-    (:foreground monokai-fg+1
-                 :background monokai-bg-1))
+     `(w3m-lnum
+       ((,class (:underline nil :bold nil
+                            :foreground ,red))))
 
-  '(erb-exec-delim-face
-    (:foreground monokai-cyan-1
-                 :background monokai-bg-1))
+     `(w3m-session-select
+       ((,class (:foreground ,monokai-fg))))
 
-  '(erb-out-face
-    (:foreground monokai-fg+1
-                 :background monokai-bg-1))
+     `(w3m-session-selected
+       ((,class (:foreground ,monokai-emph
+                             :bold t
+                             :underline t))))
 
-  '(erb-out-delim-face
-    (:foreground monokai-cyan-1
-                 :background monokai-bg-1))
+     `(w3m-tab-background
+       ((,class (:background ,monokai-bg
+                             :foreground ,monokai-fg))))
 
-  '(erb-comment-face
-    (:foreground monokai-fg-1
-                 :background monokai-bg-1))
+     `(w3m-tab-selected-background
 
-  '(erb-comment-delim-face
-    (:foreground monokai-cyan-1
-                 :background monokai-bg-1))
+       ((,class (:background ,monokai-bg
+                             :foreground ,monokai-fg))))
 
- ;;;;; rpm-mode
-  '(rpm-spec-dir-face
-    (:foreground monokai-green))
+     `(w3m-tab-mouse
+       ((,class (:background ,monokai-hl
+                             :foreground ,yellow))))
 
-  '(rpm-spec-doc-face
-    (:foreground monokai-blue))
+     `(w3m-tab-selected
+       ((,class (:background ,monokai-hl
+                             :foreground ,monokai-emph
+                             :bold t))))
 
-  '(rpm-spec-ghost-face
-    (:foreground monokai-magenta))
+     `(w3m-tab-unselected
+       ((,class (:background ,monokai-hl
+                             :foreground ,monokai-fg))))
 
-  '(rpm-spec-macro-face
-    (:foreground monokai-yellow))
+     `(w3m-tab-selected-retrieving
+       ((,class (:background ,monokai-hl
+                             :foreground ,red))))
 
-  '(rpm-spec-obsolete-tag-face
-    (:foreground monokai-red))
+     `(w3m-tab-unselected-retrieving
 
-  '(rpm-spec-package-face
-    (:foreground monokai-purple))
+       ((,class (:background ,monokai-hl
+                             :foreground ,orange))))
 
-  '(rpm-spec-section-face
-    (:foreground monokai-yellow))
+     `(w3m-tab-unselected-unseen
+       ((,class (:background ,monokai-hl
+                             :foreground ,violet))))
 
-  '(rpm-spec-tag-face
-    (:foreground monokai-purple))
+     ;; web-mode
+     `(web-mode-builtin-face
+       ((,class (:foreground ,red))))
 
-  '(rpm-spec-var-face
-    (:foreground monokai-orange))
- ;;;;; rst-mode
-  '(rst-level-1-face
-    (:foreground monokai-orange))
+     `(web-mode-comment-face
+       ((,class (:foreground ,monokai-comments))))
 
-  '(rst-level-2-face
-    (:foreground monokai-green))
+     `(web-mode-constant-face
+       ((,class (:foreground ,blue
+                             :weight bold))))
 
-  '(rst-level-3-face
-    (:foreground monokai-blue))
+     `(web-mode-current-element-highlight-face
+       ((,class
+         (:underline unspecified
+                     :weight unspecified
+                     :background ,monokai-hl))))
 
-  '(rst-level-4-face
-    (:foreground monokai-yellow))
+     `(web-mode-css-at-rule-face
+       ((,class (:foreground ,violet
+                             :slant italic))))
 
-  '(rst-level-5-face
-    (:foreground monokai-purple))
+     `(web-mode-css-pseudo-class-face
+       ((,class (:foreground ,green
+                             :slant italic))))
 
-  '(rst-level-6-face
-    (:foreground monokai-red))
+     `(web-mode-doctype-face
+       ((,class (:foreground ,monokai-comments
+                             :slant italic
+                             :weight bold))))
 
- ;;;;; show-paren
-  '(show-paren-mismatch
-    (:foreground monokai-bg-1
-                 :background monokai-red
-                 :weight bold))
+     `(web-mode-folded-face
+       ((,class (:underline t))))
 
-  '(show-paren-match
-    (:foreground monokai-bg-1
-                 :background monokai-orange
-                 ::weight bold))
+     `(web-mode-function-name-face
+       ((,class (:foreground ,blue))))
 
- ;;;;; sml-mode-line
-  '(sml-modeline-end-face
-    (:inherit 'default
-              :width condensed))
-
- ;;;;; SLIME
-  '(slime-repl-inputed-output-face
-    (:foreground monokai-red))
-
- ;;;;; tabbar
-  '(tabbar-button
-    (:foreground monokai-fg
-                 :background monokai-bg))
-
-  '(tabbar-selected
-    (:foreground monokai-fg
-                 :background monokai-bg
-                 :box (:line-width -1 :style pressed-button)))
+     `(web-mode-html-attr-name-face
+       ((,class (:foreground ,blue
+                             :slant normal))))
 
-  '(tabbar-unselected
-    (:foreground monokai-fg
-                 :background monokai-bg+2
-                 :box (:line-width -1 :style released-button)))
- ;;;;; term
-  '(term-color-black
-    (:foreground monokai-bg
-                 :background monokai-bg+1))
-
-  '(term-color-red
-    (:foreground monokai-red
-                 :background monokai-red+1))
-
-  '(term-color-green
-    (:foreground monokai-green
-                 :background monokai-green+1))
-
-  '(term-color-yellow
-    (:foreground monokai-orange
-                 :background monokai-orange+1))
-
-  '(term-color-blue
-    (:foreground monokai-blue
-                 :background monokai-blue+1))
+     `(web-mode-html-attr-value-face
+       ((,class (:foreground ,cyan
+                             :slant italic))))
 
-  '(term-color-magenta
-    (:foreground monokai-purple
-                 :background monokai-purple+1))
+     `(web-mode-html-tag-face
+       ((,class (:foreground ,green))))
 
-  '(term-color-cyan
-    (:foreground monokai-cyan
-                 :background monokai-cyan+1))
+     `(web-mode-keyword-face
+       ((,class (:foreground ,yellow
+                             :weight normal))))
 
-  '(term-color-white
-    (:foreground monokai-fg
-                 :background monokai-fg+1))
+     `(web-mode-preprocessor-face
+       ((,class (:foreground ,yellow
+                             :slant normal
+                             :weight unspecified))))
 
-  '(term-default-fg-color
-    (:foreground monokai-fg))
+     `(web-mode-string-face
+       ((,class (:foreground ,cyan))))
 
-  '(term-default-bg-color
-    (:foreground monokai-bg))
+     `(web-mode-type-face
+       ((,class (:foreground ,yellow))))
 
- ;;;;; volatile-highlights
-  '(vhl/default-face
-    (:background monokai-bg+2))
+     `(web-mode-variable-name-face
+       ((,class (:foreground ,blue))))
 
- ;;;;; emacs-w3m
-  '(w3m-anchor
-    (:foreground monokai-fg-1
-                 :underline t
-                 :weight bold))
+     `(web-mode-warning-face
+       ((,class (:inherit font-lock-warning-face))))
 
-  '(w3m-arrived-anchor
-    (:foreground monokai-yellow-1
-                 :underline t
-                 :weight normal))
+     `(web-mode-block-attr-name-face
+       ((,class (:inherit web-mode-html-attr-name-face))))
 
-  '(w3m-form
-    (:foreground monokai-red
-                 :underline t))
+     `(web-mode-block-attr-value-face
+       ((,class (:inherit web-mode-html-attr-value-face))))
 
-  '(w3m-header-line-location-title
-    (:foreground monokai-fg-1
-                 :underline t
-                 :weight bold))
+     `(web-mode-block-comment-face
+       ((,class (:inherit web-mode-comment-face))))
 
-  '(w3m-history-current-url
-    (:inherit 'match))
+     `(web-mode-block-control-face
+       ((,class (:inherit font-lock-preprocessor-face))))
 
-  '(w3m-lnum
-    (:foreground monokai-purple
-                 :background monokai-bg))
+     `(web-mode-block-face
+       ((,class (:background unspecified))))
 
-  '(w3m-lnum-match
-    (:background monokai-bg-1
-                 :foreground monokai-orange
-                 :weight bold))
+     `(web-mode-block-string-face
+       ((,class (:inherit web-mode-string-face))))
 
-  '(w3m-lnum-minibuffer-prompt
-    (:foreground monokai-fg-1))
+     `(web-mode-comment-keyword-face
+       ((,class (:box 1
+                      :weight bold))))
 
- ;;;;; whitespace-mode
-  '(whitespace-space
-    (:background monokai-bg
-                 :foreground monokai-bg-1))
-  '(whitespace-hspace
-    (:background monokai-bg
-                 :foreground monokai-bg-1))
+     `(web-mode-css-color-face
+       ((,class (:inherit font-lock-builtin-face))))
 
-  '(whitespace-tab
-    (:background monokai-red))
+     `(web-mode-css-function-face
+       ((,class (:inherit font-lock-builtin-face))))
 
-  '(whitespace-newline
-    (:foreground monokai-bg-1))
+     `(web-mode-css-priority-face
+       ((,class (:inherit font-lock-builtin-face))))
 
-  '(whitespace-trailing
-    (:background monokai-red))
+     `(web-mode-css-property-name-face
+       ((,class (:inherit font-lock-variable-name-face))))
 
-  '(whitespace-line
-    (:background monokai-bg
-                 :foreground monokai-red))
+     `(web-mode-css-selector-face
+       ((,class (:inherit font-lock-keyword-face))))
 
-  '(whitespace-space-before-tab
-    (:background monokai-bg
-                 :foreground monokai-orange))
+     `(web-mode-css-string-face
+       ((,class (:inherit web-mode-string-face))))
 
-  '(whitespace-indentation
-    (:background monokai-fg-1
-                 :foreground monokai-red))
+     `(web-mode-javascript-string-face
+       ((,class (:inherit web-mode-string-face))))
 
-  '(whitespace-empty
-    (:background monokai-fg-1))
+     `(web-mode-json-context-face
+       ((,class (:foreground ,violet))))
 
-  '(whitespace-space-after-tab
-    (:background monokai-fg-1
-                 :foreground monokai-red))
+     `(web-mode-json-key-face
+       ((,class (:foreground ,violet))))
 
- ;;;;; wanderlust
-  '(wl-highlight-folder-few-face
-    (:foreground monokai-purple))
+     `(web-mode-json-string-face
+       ((,class (:inherit web-mode-string-face))))
 
-  '(wl-highlight-folder-many-face
-    (:foreground monokai-red))
+     `(web-mode-param-name-face
+       ((,class (:foreground ,monokai-fg))))
 
-  '(wl-highlight-folder-path-face
-    (:foreground monokai-orange))
+     `(web-mode-part-comment-face
+       ((,class (:inherit web-mode-comment-face))))
 
-  '(wl-highlight-folder-unread-face
-    (:foreground monokai-blue))
+     `(web-mode-part-face
+       ((,class (:inherit web-mode-block-face))))
 
-  '(wl-highlight-folder-zero-face
-    (:foreground monokai-fg))
+     `(web-mode-part-string-face
+       ((,class (:inherit web-mode-string-face))))
 
-  '(wl-highlight-folder-unknown-face
-    (:foreground monokai-cyan))
+     `(web-mode-symbol-face
+       ((,class (:foreground ,yellow))))
 
-  '(wl-highlight-message-citation-header
-    (:foreground monokai-yellow))
+     `(web-mode-whitespace-face
+       ((,class (:background ,red))))
 
-  '(wl-highlight-message-cited-text-1
-    (:foreground monokai-purple))
-
-  '(wl-highlight-message-cited-text-2
-    (:foreground monokai-purple+1))
-
-  '(wl-highlight-message-cited-text-3
-    (:foreground monokai-blue))
-
-  '(wl-highlight-message-cited-text-4
-    (:foreground monokai-blue+1))
-
-  '(wl-highlight-message-header-contents-face
-    (:foreground monokai-green))
-
-  '(wl-highlight-message-headers-face
-    (:foreground monokai-red+1))
-
-  '(wl-highlight-message-important-header-contents
-    (:foreground monokai-purple))
-
-  '(wl-highlight-message-header-contents
-    (:foreground monokai-green+1))
-
-  '(wl-highlight-message-important-header-contents2
-    (:foreground monokai-purple+1))
-
-  '(wl-highlight-message-signature
-    (:foreground monokai-green))
-
-  '(wl-highlight-message-unimportant-header-contents
-    (:foreground monokai-fg))
-
-  '(wl-highlight-summary-answered-face
-    (:foreground monokai-blue))
-
-  '(wl-highlight-summary-disposed-face
-    (:foreground monokai-fg
-                 :slant italic))
-
-  '(wl-highlight-summary-new-face
-    (:foreground monokai-blue))
-
-  '(wl-highlight-summary-normal-face
-    (:foreground monokai-fg))
-
-  '(wl-highlight-summary-thread-top-face
-    (:foreground monokai-fg-1))
+     ;; whitespace-mode
+     `(whitespace-space
+       ((,class (:background unspecified
+                             :foreground ,monokai-comments
+                             :inverse-video unspecified
+                             :slant italic))))
 
-  '(wl-highlight-thread-indent-face
-    (:foreground monokai-magenta))
-
-  '(wl-highlight-summary-refiled-face
-    (:foreground monokai-fg))
-
-  '(wl-highlight-summary-displaying-face
-    (:underline t
-                :weight bold))
-
- ;;;;; which-func-mode
-  '(which-func
-    (:foreground monokai-purple+1))
-
- ;;;;; yascroll
-  '(yascroll:thumb-text-area
-    (:background monokai-bg-1))
-
-  '(yascroll:thumb-fringe
-    (:background monokai-bg-1
-                 :foreground monokai-bg-1))
- )
-
-;;; Theme Variables
-(custom-theme-set-variables
- 'monokai
-;;;;; ansi-color
- '(ansi-color-names-vector
-   [monokai-bg
-    monokai-red
-    monokai-green
-    monokai-orange
-    monokai-blue
-    monokai-purple
-    monokai-cyan
-    monokai-fg])
-
-;;;;; fill-column-indicator
- '(fci-rule-color monokai-bg-1)
-;;;;; vc-annotate
- '(vc-annotate-color-map
-   '(( 20. . monokai-fg-1)
-     ( 40. . monokai-bg+2)
-     ( 60. . monokai-red)
-     ( 80. . monokai-red+1)
-     (100. . monokai-orange)
-     (120. . monokai-orange+1)
-     (140. . monokai-green)
-     (160. . monokai-green+1)
-     (180. . monokai-yellow)
-     (200. . monokai-yellow+1)
-     (220. . monokai-blue)
-     (240. . monokai-blue+1)
-     (260. . monokai-purple)
-     (280. . monokai-purple+1)
-     (300. . monokai-cyan)
-     (320. . monokai-cyan+1)
-     (340. . monokai-magenta)
-     (360. . monokai-magenta+1)))
- '(vc-annotate-very-old-color monokai-magenta)
- '(vc-annotate-background monokai-bg)
- )
-
-;;; Rainbow Support
-(declare-function rainbow-mode 'rainbow-mode)
-(declare-function rainbow-colorize-by-assoc 'rainbow-mode)
-
-(defvar monokai-add-font-lock-keywords nil
-  "Whether to add font-lock keywords for monokai color names.
-In buffers visiting library `monokai-theme.el' the monokai
-specific keywords are always added.  In all other Emacs-Lisp
-buffers this variable controls whether this should be done.
-This requires library `rainbow-mode'.")
-
-(defvar monokai-colors-font-lock-keywords nil)
-
-;;; Footer
+     `(whitespace-hspace
+       ((,class (:background unspecified
+                             :foreground ,monokai-emph
+                             :inverse-video unspecified))))
+
+     `(whitespace-tab
+       ((,class (:background unspecified
+                             :foreground ,red
+                             :inverse-video unspecified
+                             :weight bold))))
+
+     `(whitespace-newline
+       ((,class(:background unspecified
+                            :foreground ,monokai-comments
+                            :inverse-video unspecified))))
+
+     `(whitespace-trailing
+       ((,class (:background unspecified
+                             :foreground ,orange-lc
+                             :inverse-video t))))
+
+     `(whitespace-line
+       ((,class (:background unspecified
+                             :foreground ,magenta
+                             :inverse-video unspecified))))
+
+     `(whitespace-space-before-tab
+       ((,class (:background ,red-lc
+                             :foreground unspecified
+                             :inverse-video unspecified))))
+
+     `(whitespace-indentation
+       ((,class (:background unspecified
+                             :foreground ,yellow
+                             :inverse-video unspecified :weight bold))))
+
+     `(whitespace-empty
+       ((,class (:background unspecified
+                             :foreground ,red-lc
+                             :inverse-video t))))
+
+     `(whitespace-space-after-tab
+       ((,class (:background unspecified
+                             :foreground ,orange
+                             :inverse-video t
+                             :weight bold))))
+
+     ;; wanderlust
+     `(wl-highlight-folder-few-face
+       ((,class (:foreground ,red))))
+
+     `(wl-highlight-folder-many-face
+       ((,class (:foreground ,red))))
+
+     `(wl-highlight-folder-path-face
+       ((,class (:foreground ,orange))))
+
+     `(wl-highlight-folder-unread-face
+       ((,class (:foreground ,blue))))
+
+     `(wl-highlight-folder-zero-face
+       ((,class (:foreground ,monokai-fg))))
+
+     `(wl-highlight-folder-unknown-face
+       ((,class (:foreground ,blue))))
+
+     `(wl-highlight-message-citation-header
+       ((,class (:foreground ,red))))
+
+     `(wl-highlight-message-cited-text-1
+       ((,class (:foreground ,red))))
+
+     `(wl-highlight-message-cited-text-2
+       ((,class (:foreground ,green))))
+
+     `(wl-highlight-message-cited-text-3
+       ((,class (:foreground ,blue))))
+
+     `(wl-highlight-message-cited-text-4
+       ((,class (:foreground ,blue))))
+
+     `(wl-highlight-message-header-contents-face
+       ((,class (:foreground ,green))))
+
+     `(wl-highlight-message-headers-face
+       ((,class (:foreground ,red))))
+
+     `(wl-highlight-message-important-header-contents
+       ((,class (:foreground ,green))))
+
+     `(wl-highlight-message-header-contents
+       ((,class (:foreground ,green))))
+
+     `(wl-highlight-message-important-header-contents2
+       ((,class (:foreground ,green))))
+
+     `(wl-highlight-message-signature
+       ((,class (:foreground ,green))))
+
+     `(wl-highlight-message-unimportant-header-contents
+       ((,class (:foreground ,monokai-fg))))
+
+     `(wl-highlight-summary-answered-face
+       ((,class (:foreground ,blue))))
+
+     `(wl-highlight-summary-disposed-face
+       ((,class (:foreground ,monokai-fg
+                             :slant italic))))
+
+     `(wl-highlight-summary-new-face
+       ((,class (:foreground ,blue))))
+
+     `(wl-highlight-summary-normal-face
+       ((,class (:foreground ,monokai-fg))))
+
+     `(wl-highlight-summary-thread-top-face
+       ((,class (:foreground ,yellow))))
+
+     `(wl-highlight-thread-indent-face
+       ((,class (:foreground ,magenta))))
+
+     `(wl-highlight-summary-refiled-face
+       ((,class (:foreground ,monokai-fg))))
+
+     `(wl-highlight-summary-displaying-face
+       ((,class (:underline t :weight bold))))
+
+
+     ;; weechat
+     `(weechat-error-face
+       ((,class (:inherit error))))
+
+     `(weechat-highlight-face
+       ((,class (:foreground ,monokai-emph
+                             :weight bold))))
+
+     `(weechat-nick-self-face
+       ((,class (:foreground ,green
+                             :weight unspecified
+                             :inverse-video t))))
+
+     `(weechat-prompt-face
+       ((,class (:inherit minibuffer-prompt))))
+
+     `(weechat-time-face
+       ((,class (:foreground ,monokai-comments))))
+
+     ;; which-func-mode
+     `(which-func
+       ((,class (:foreground ,green))))
+
+     ;; window-number-mode
+     `(window-number-face
+       ((,class (:foreground ,green))))
+
+     ;; yascroll
+     `(yascroll:thumb-text-area
+       ((,class (:foreground ,monokai-comments
+                             :background ,monokai-comments))))
+
+     `(yascroll:thumb-fringe
+       ((,class (:foreground ,monokai-comments
+                             :background ,monokai-comments))))
+
+     ;; zencoding
+     `(zencoding-preview-input
+       ((,class (:background ,monokai-hl
+                             :box ,monokai-emph)))))
+
+    (custom-theme-set-variables
+     'monokai
+     `(ansi-color-names-vector [,monokai-bg ,red ,green ,yellow
+                                            ,blue ,magenta ,cyan ,monokai-fg])
+
+     ;; compilation
+     `(compilation-message-face 'default)
+
+     ;; fill-column-indicator
+     `(fci-rule-color ,monokai-hl)
+
+     ;; magit
+     `(magit-diff-use-overlays nil)
+
+     ;; highlight-changes
+     `(highlight-changes-colors '(,magenta ,violet))
+
+     ;; highlight-tail
+     `(highlight-tail-colors
+       '((,monokai-hl . 0)(,green-lc . 20)(,cyan-lc . 30)(,blue-lc . 50)
+         (,yellow-lc . 60)(,orange-lc . 70)(,magenta-lc . 85)(,monokai-hl . 
100)))
+
+     ;; syslog-mode
+     `(syslog-ip-face
+       '((t :background unspecified
+            :foreground ,yellow)))
+
+     `(syslog-hour-face
+       '((t :background unspecified
+            :foreground ,green)))
+
+     `(syslog-error-face
+       '((t :background unspecified
+            :foreground ,red
+            :weight bold)))
+
+     `(syslog-warn-face
+       '((t :background unspecified
+            :foreground ,orange
+            :weight bold)))
+
+     `(syslog-info-face
+       '((t :background unspecified
+            :foreground ,blue
+            :weight bold)))
+
+     `(syslog-debug-face
+       '((t :background unspecified
+            :foreground ,cyan
+            :weight bold)))
+
+     `(syslog-su-face
+       '((t :background unspecified
+            :foreground ,magenta)))
+
+     ;; vc
+     `(vc-annotate-color-map
+       '((20 . ,red)
+         (40 . "#CF4F1F")
+         (60 . "#C26C0F")
+         (80 . ,yellow)
+         (100 . "#AB8C00")
+         (120 . "#A18F00")
+         (140 . "#989200")
+         (160 . "#8E9500")
+         (180 . ,green)
+         (200 . "#729A1E")
+         (220 . "#609C3C")
+         (240 . "#4E9D5B")
+         (260 . "#3C9F79")
+         (280 . ,cyan)
+         (300 . "#299BA6")
+         (320 . "#2896B5")
+         (340 . "#2790C3")
+         (360 . ,blue)))
+     `(vc-annotate-very-old-color nil)
+     `(vc-annotate-background nil)
+
+     ;; weechat
+     `(weechat-color-list
+       '(unspecified ,monokai-bg ,monokai-hl
+                     ,red-d ,red
+                     ,green-d ,green
+                     ,yellow-d ,yellow
+                     ,blue-d ,blue
+                     ,magenta-d ,magenta
+                     ,cyan-d ,cyan
+                     ,monokai-fg ,monokai-emph)))))
 
 ;;;###autoload
-(and load-file-name
-     (boundp 'custom-theme-load-path)
-     (add-to-list 'custom-theme-load-path
-                  (file-name-as-directory
-                   (file-name-directory load-file-name))))
+(when (and (boundp 'custom-theme-load-pflath) load-file-name)
+  (add-to-list 'custom-theme-load-path
+               (file-name-as-directory (file-name-directory load-file-name))))
+
+(create-monokai-theme)
+
+(add-hook 'server-visit-hook 'create-monokai-theme )
 
 (provide-theme 'monokai)
+
+;; Local Variables:
+;; no-byte-compile: t
+;; eval: (when (fboundp 'rainbow-mode) (rainbow-mode 1))
+;; fill-column: 95
+;; End:
+
 ;;; monokai-theme.el ends here



reply via email to

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