adjust
authorJoerg Jaspert <joerg@debian.org>
Sun, 28 Apr 2013 16:35:50 +0000 (18:35 +0200)
committerJoerg Jaspert <joerg@debian.org>
Sun, 28 Apr 2013 16:35:50 +0000 (18:35 +0200)
.emacs.d/config/emacs.org
.emacs.d/elisp/local/bind-key.el
.emacs.d/elisp/local/solarized.el [new file with mode: 0644]
.emacs.d/elisp/local/use-package.el
.emacs.d/elisp/org-templates/level-0.org
.emacs.d/init.el
.emacs.d/themes/solarized-dark-theme.el [new file with mode: 0644]
.emacs.d/themes/solarized-light-theme.el [new file with mode: 0644]

index 16e8c1b..69b0f5e 100644 (file)
@@ -1,8 +1,10 @@
-#+STARTUP: align fold nodlcheck hidestars oddeven lognotestate
-#+TITLE:     emacs.org - Ganneffs emacs configuration
-#+DATE:      %Y-%m-%d
-#+SETUPFILE: ~/.emacs.d/elisp/org-templates/level-0.org
-#+LATEX_CMD: xelatex
+#+TITLE:       emacs.org - Ganneffs emacs configuration
+#+DESCRIPTION: My current Emacs configuration
+#+KEYWORDS:    org-mode Emacs configuration
+#+STARTUP:     align fold nodlcheck hidestars oddeven lognotestate
+#+DATE:        %Y-%m-%d
+#+SETUPFILE:   ~/.emacs.d/elisp/org-templates/level-0.org
+#+LATEX_CMD:   xelatex
 
 * Notes for people looking at this using a webbrowser
 My whole emacs config is done using [[http://orgmode.org/][org-mode]] files, with a little magic
@@ -280,7 +282,10 @@ I dislike the startup message
 
 Usually I want the lines to break at 72 characters.
 #+BEGIN_SRC emacs-lisp
-(setq default-fill-column 72)
+  (if (> emacs-major-version 22
+         )
+      (setq fill-column 72)
+    (setq default-fill-column 72))
 #+END_SRC
 
 And it is nice to have a final newline in files.
@@ -331,7 +336,9 @@ for new users. Enable them.
 I've tried various different fonts and while I like the Terminus font
 most for my shells, in Emacs Inconsolata clearly wins.
 #+BEGIN_SRC emacs-lisp
-  (set-default-font "Inconsolata-14")
+(if (> emacs-major-version 22)
+    (set-frame-font "Inconsolata-14")
+  (set-default-font "Inconsolata-14"))
 #+END_SRC
 
 And I always liked dark backgrounds with colors setup for them. So I
@@ -340,9 +347,15 @@ entirely liked it. Until I found solarized, which is now not only my
 emacs theme, but also for most of my other software too, especially my
 shell. Consistent look is great.
 #+BEGIN_SRC emacs-lisp
-  (add-to-list 'custom-theme-load-path (expand-file-name "emacs-color-theme-solarized" jj-elisp-dir))
-  (setq solarized-termcolors 16)
-  (load-theme 'solarized-dark t)
+(if (boundp 'custom-theme-load-path)
+    (add-to-list 'custom-theme-load-path jj-theme-dir)
+     (load-theme 'solarized-dark t)
+  (message "Emacs version too old, using old color theme style")
+  (add-to-list 'load-path (expand-file-name "emacs-color-theme-solarized" jj-elisp-dir))
+  (require 'color-theme)
+  (require 'color-theme-solarized)
+  (color-theme-initialize)
+  (color-theme-solarized-dark))
 #+END_SRC
 
 Make the fringe (gutter) smaller, the argument is a width in pixels (the default is 8)
@@ -483,7 +496,9 @@ be org-mode - it is just so much better to use. And does sensible things
 with many README files out there, and various other "crap" you get to
 read in emacs.
 #+BEGIN_SRC emacs-lisp
-(setq default-major-mode 'org-mode)
+(if (> emacs-major-version 22)
+  (setq major-mode 'org-mode)
+  (setq default-major-mode 'org-mode))
 (setq initial-major-mode 'org-mode)
 #+END_SRC
 
@@ -753,12 +768,14 @@ not, bad Emacs.
 **** ace-jump-mode
 [2013-04-28 So 11:26]
 #+BEGIN_SRC emacs-lisp
-(autoload 'ace-jump-mode "ace-jump-mode" "Emacs quick move minor mode" t)
-(define-key global-map (kbd "C-c SPC") 'ace-jump-mode)
-;; enable a more powerful jump back function from ace jump mode
-(autoload 'ace-jump-mode-pop-mark "ace-jump-mode" "Ace jump back :-)" t)
-(eval-after-load "ace-jump-mode" '(ace-jump-mode-enable-mark-sync))
-(define-key global-map (kbd "C-c C-SPC") 'ace-jump-mode-pop-mark)
+  (autoload 'ace-jump-mode "ace-jump-mode" "Emacs quick move minor mode" t)
+  (define-key global-map (kbd "C-c SPC") 'ace-jump-mode)
+  ;; enable a more powerful jump back function from ace jump mode
+  (autoload 'ace-jump-mode-pop-mark "ace-jump-mode" "Ace jump back :-)" t)
+  (eval-after-load "ace-jump-mode" '(ace-jump-mode-enable-mark-sync))
+  (define-key global-map (kbd "C-c C-SPC") 'ace-jump-mode-pop-mark)
+  
+  
 #+END_SRC
 **** Overwrite mode
 Usually you can press the *Ins*ert key, to get into overwrite mode. I
@@ -1227,15 +1244,24 @@ Instead of default /html-mode/ I use /html-helper-mode/.
 #+END_SRC
 
 ** org                                                                :FIXME:
+*** General settings
+[2013-04-28 So 17:06]
+I use org-mode a lot and, having my config for this based on [[*Bernt%20Hansen][the config of Bernt Hansen]],
+it is quite extensive. Nevertheless, it starts out small, loading it.
+#+BEGIN_SRC emacs-lisp
+(require 'org)
+#+END_SRC
+
+My browsers (Conkeror, Iceweasel) can store links in org-mode. For
+that we need org-protocol.
 #+BEGIN_SRC emacs-lisp
-(add-to-list 'auto-mode-alist '("\\.\\(org\\|org_archive\\|txt\\)$" . org-mode))
-(require 'org-install)
 (require 'org-protocol)
+#+END_SRC
 
-(global-set-key "\C-cl" 'org-store-link)
-(global-set-key "\C-ca" 'org-agenda)
-(global-set-key "\C-cb" 'org-iswitchb)
-(define-key mode-specific-map [?a] 'org-agenda)
+*** Global keybindings.
+[2013-04-28 So 17:12]
+Start off by defining a series of keybindings. We also remove C-c [
+#+BEGIN_SRC emacs-lisp
 ;; Disable C-c [ and C-c ] in org-mode
 (add-hook 'org-mode-hook
           (lambda ()
@@ -1245,6 +1271,52 @@ Instead of default /html-mode/ I use /html-helper-mode/.
             (org-defkey org-mode-map "\C-c["    'undefined)
             (org-defkey org-mode-map "\C-c]"    'undefined))
           'append)
+
+(global-set-key "\C-cl" 'org-store-link)
+(global-set-key "\C-ca" 'org-agenda)
+(global-set-key "\C-cb" 'org-iswitchb)
+(define-key mode-specific-map [?a] 'org-agenda)
+
+
+;; Custom Key Bindings
+(global-set-key (kbd "<f12>") 'org-agenda)
+(global-set-key (kbd "<f5>") 'bh/org-todo)
+(global-set-key (kbd "<S-f5>") 'bh/widen)
+(global-set-key (kbd "<f7>") 'bh/set-truncate-lines)
+(global-set-key (kbd "<f8>") 'org-cycle-agenda-files)
+(global-set-key (kbd "<f9> <f9>") 'bh/show-org-agenda)
+(global-set-key (kbd "<f9> c") 'calendar)
+(global-set-key (kbd "<f9> f") 'boxquote-insert-file)
+(global-set-key (kbd "<f9> h") 'bh/hide-other)
+(global-set-key (kbd "<f9> n") 'org-narrow-to-subtree)
+(global-set-key (kbd "<f9> w") 'widen)
+(global-set-key (kbd "<f9> u") 'bh/narrow-up-one-level)
+
+(global-set-key (kbd "<f9> I") 'bh/punch-in)
+(global-set-key (kbd "<f9> O") 'bh/punch-out)
+
+(global-set-key (kbd "<f9> r") 'boxquote-region)
+(global-set-key (kbd "<f9> s") 'bh/switch-to-scratch)
+
+(global-set-key (kbd "<f9> t") 'bh/insert-inactive-timestamp)
+(global-set-key (kbd "<f9> T") 'tabify)
+(global-set-key (kbd "<f9> U") 'untabify)
+
+(global-set-key (kbd "<f9> v") 'visible-mode)
+(global-set-key (kbd "<f9> SPC") 'bh/clock-in-last-task)
+(global-set-key (kbd "C-<f9>") 'previous-buffer)
+(global-set-key (kbd "M-<f9>") 'org-toggle-inline-images)
+(global-set-key (kbd "C-x n r") 'narrow-to-region)
+(global-set-key (kbd "C-<f10>") 'next-buffer)
+(global-set-key (kbd "<f11>") 'org-clock-goto)
+(global-set-key (kbd "C-<f11>") 'org-clock-in)
+(global-set-key (kbd "C-s-<f12>") 'bh/save-then-publish)
+(global-set-key (kbd "C-M-r") 'org-capture)
+(global-set-key (kbd "C-c r") 'org-capture)
+
+(define-key org-mode-map [(control k)] 'jj-org-kill-line)
+
+
 ;; Enable abbrev-mode
 (add-hook 'org-mode-hook (lambda () (abbrev-mode 1)))
 (setq org-startup-indented t)
@@ -1253,7 +1325,10 @@ Instead of default /html-mode/ I use /html-helper-mode/.
 (setq org-reverse-note-order nil)
 
 (setq org-agenda-log-mode-items (quote (closed clock state)))
-(setq org-agenda-ndays 7)
+(if (> emacs-major-version 23)
+    (setq org-agenda-span 7)
+  (setq org-agenda-ndays 7))
+
 (setq org-agenda-show-all-dates t)
 (setq org-agenda-start-on-weekday nil)
 (setq org-deadline-warning-days 14)
@@ -1301,44 +1376,6 @@ Instead of default /html-mode/ I use /html-helper-mode/.
 (setq org-use-fast-todo-selection t)
 (setq org-treat-S-cursor-todo-selection-as-state-change nil)
 
-;; Custom Key Bindings
-(global-set-key (kbd "<f12>") 'org-agenda)
-(global-set-key (kbd "<f5>") 'bh/org-todo)
-(global-set-key (kbd "<S-f5>") 'bh/widen)
-(global-set-key (kbd "<f7>") 'bh/set-truncate-lines)
-(global-set-key (kbd "<f8>") 'org-cycle-agenda-files)
-(global-set-key (kbd "<f9> <f9>") 'bh/show-org-agenda)
-(global-set-key (kbd "<f9> c") 'calendar)
-(global-set-key (kbd "<f9> f") 'boxquote-insert-file)
-(global-set-key (kbd "<f9> h") 'bh/hide-other)
-(global-set-key (kbd "<f9> n") 'org-narrow-to-subtree)
-(global-set-key (kbd "<f9> w") 'widen)
-(global-set-key (kbd "<f9> u") 'bh/narrow-up-one-level)
-
-(global-set-key (kbd "<f9> I") 'bh/punch-in)
-(global-set-key (kbd "<f9> O") 'bh/punch-out)
-
-(global-set-key (kbd "<f9> r") 'boxquote-region)
-(global-set-key (kbd "<f9> s") 'bh/switch-to-scratch)
-
-(global-set-key (kbd "<f9> t") 'bh/insert-inactive-timestamp)
-(global-set-key (kbd "<f9> T") 'tabify)
-(global-set-key (kbd "<f9> U") 'untabify)
-
-(global-set-key (kbd "<f9> v") 'visible-mode)
-(global-set-key (kbd "<f9> SPC") 'bh/clock-in-last-task)
-(global-set-key (kbd "C-<f9>") 'previous-buffer)
-(global-set-key (kbd "M-<f9>") 'org-toggle-inline-images)
-(global-set-key (kbd "C-x n r") 'narrow-to-region)
-(global-set-key (kbd "C-<f10>") 'next-buffer)
-(global-set-key (kbd "<f11>") 'org-clock-goto)
-(global-set-key (kbd "C-<f11>") 'org-clock-in)
-(global-set-key (kbd "C-s-<f12>") 'bh/save-then-publish)
-(global-set-key (kbd "C-M-r") 'org-capture)
-(global-set-key (kbd "C-c r") 'org-capture)
-
-(define-key org-mode-map [(control k)] 'jj-org-kill-line)
-
 #+END_SRC
 
 Speed commands enable single-letter commands in Org-mode files when
@@ -2088,7 +2125,9 @@ The Emacs Lisp Package Archive (may) contain(s) some things I
 want. Even though I usually only use it to get the package, then when I
 like it move it into my own space. My elpa subdir stays empty.
 #+BEGIN_SRC emacs-lisp
-  (when (> emacs-major-version 23)
+  
+  (when (
+         > emacs-major-version 23)
     (require 'package)
     (setq package-user-dir (expand-file-name "elpa" jj-cache-dir))
     (package-initialize)
index 0d3039e..95dc0c8 100644 (file)
 
 (define-minor-mode override-global-mode
   "A minor mode so that keymap settings override other modes."
-  t "" override-global-map)
+  t "")
+
+;; the keymaps in `emulation-mode-map-alists' take precedence over
+;; `minor-mode-map-alist'
+(add-to-list 'emulation-mode-map-alists
+             `((override-global-mode . ,override-global-map)))
 
 (add-hook 'after-init-hook
           (function
     (display-buffer (current-buffer))))
 
 (provide 'bind-key)
-
+;; Local Variables:
+;; indent-tabs-mode: nil
+;; End:
 ;;; bind-key.el ends here
diff --git a/.emacs.d/elisp/local/solarized.el b/.emacs.d/elisp/local/solarized.el
new file mode 100644 (file)
index 0000000..527213e
--- /dev/null
@@ -0,0 +1,1096 @@
+;;; solarized.el --- Solarized for Emacs.
+
+;; Copyright (C) 2011-2013 Bozhidar Batsov
+
+;; Author: Bozhidar Batsov <bozhidar@batsov.com>
+;; Author: Thomas Frössman <thomasf@jossystem.se>
+;; URL: http://github.com/bbatsov/solarized-emacs
+;; Version: 1.0.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
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;
+;; A port of Solarized to Emacs.
+;;
+;;; Installation:
+;;
+;;   Drop the `solarized-theme.el` somewhere in your `load-path` and
+;; the two themes in a folder that is on `custom-theme-load-path'
+;; and enjoy!
+;;
+;; Don't forget that the theme requires Emacs 24.
+;;
+;;; Bugs
+;;
+;; None that I'm aware of.
+;;
+;;; Credits
+;;
+;; Ethan Schoonover created the original theme for vim on such this port
+;; is based.
+;;
+;;; Code:
+
+(defun create-solarized-theme (variant theme-name &optional childtheme)
+  (let* ((class '((class color) (min-colors 89)))
+         ;; Solarized palette
+         (base03    "#002b36")
+         (base02    "#073642")
+         ;; emphasized content
+         (base01    "#586e75")
+         ;; primary content
+         (base00    "#657b83")
+         (base0     "#839496")
+         ;; comments
+         (base1     "#93a1a1")
+         ;; background highlight light
+         (base2     "#eee8d5")
+         ;; background light
+         (base3     "#fdf6e3")
+
+         ;; Solarized accented colors
+         (yellow    "#b58900")
+         (orange    "#cb4b16")
+         (red       "#dc322f")
+         (magenta   "#d33682")
+         (violet    "#6c71c4")
+         (blue      "#268bd2")
+         (cyan      "#2aa198")
+         (green     "#859900")
+
+         ;; Darker and lighter accented colors
+         ;; Only use these in exceptional circumstances!
+         (yellow-d  "#7B6000")
+         (yellow-l  "#DEB542")
+         (orange-d  "#8B2C02")
+         (orange-l  "#F2804F")
+         (red-d     "#990A1B")
+         (red-l     "#FF6E64")
+         (magenta-d "#93115C")
+         (magenta-l "#F771AC")
+         (violet-d  "#3F4D91")
+         (violet-l  "#9EA0E5")
+         (blue-d    "#00629D")
+         (blue-l    "#69B7F0")
+         (cyan-d    "#00736F")
+         (cyan-l    "#69CABF")
+         (green-d   "#546E00")
+         (green-l   "#B4C342")
+
+         ;; Light/Dark adaptive solarized colors
+         (solarized-fg (if (eq variant 'light) base00 base0))
+         (solarized-bg (if (eq variant 'light) base3 base03))
+         (solarized-hl (if (eq variant 'light) base2 base02))
+         (solarized-emph (if (eq variant 'light) base01 base1))
+         (solarized-comments (if (eq variant 'light) base1 base01))
+
+         ;; Light/Dark adaptive higher/lower contrast accented colors
+         ;; Only use these in exceptional cirmumstances!
+         (solarized-fg-hc (if (eq variant 'light) base3 base03))
+         (solarized-fg-lc (if (eq variant 'light) base03 base3))
+
+         (yellow-hc (if (eq variant 'light) yellow-d yellow-l))
+         (yellow-lc (if (eq variant 'light) yellow-l yellow-d))
+         (orange-hc (if (eq variant 'light) orange-d orange-l))
+         (orange-lc (if (eq variant 'light) orange-l orange-d))
+         (red-hc (if (eq variant 'light) red-d red-l))
+         (red-lc (if (eq variant 'light) red-l red-d))
+         (magenta-hc (if (eq variant 'light) magenta-d magenta-l))
+         (magenta-lc (if (eq variant 'light) magenta-l magenta-d))
+         (violet-hc (if (eq variant 'light) violet-d violet-l))
+         (violet-lc (if (eq variant 'light) violet-l violet-d))
+         (blue-hc (if (eq variant 'light) blue-d blue-l))
+         (blue-lc (if (eq variant 'light) blue-l blue-d))
+         (cyan-hc (if (eq variant 'light) cyan-d cyan-l))
+         (cyan-lc (if (eq variant 'light) cyan-l cyan-d))
+         (green-hc (if (eq variant 'light) green-d green-l))
+         (green-lc (if (eq variant 'light) green-l green-d)))
+    (custom-theme-set-faces
+     theme-name
+     '(button ((t (:underline t))))
+
+     ;; basic coloring
+     `(default ((,class (:foreground ,solarized-fg :background ,solarized-bg))))
+     `(shadow ((,class (:foreground ,solarized-comments))))
+     `(match ((,class (:background ,solarized-hl :foreground ,solarized-emph :weight bold))))
+     `(cursor ((,class (:foreground ,solarized-bg :background ,solarized-fg :inverse-video t))))
+     `(escape-glyph-face ((,class (:foreground ,red))))
+     `(fringe ((,class (:foreground ,solarized-fg :background ,solarized-hl))))
+     `(header-line ((,class (:foreground ,yellow
+                                         :background ,solarized-hl
+                                         :box (:line-width -1 :style released-button)))))
+     `(highlight ((,class (:background ,solarized-hl))))
+     `(link ((,class (:foreground ,yellow :underline t :weight bold))))
+     `(link-visited ((,class (:foreground ,yellow :underline t :weight normal))))
+     `(success ((,class (:foreground ,green ))))
+     `(warning ((,class (:foreground ,yellow ))))
+     `(error ((,class (:foreground ,orange))))
+     `(lazy-highlight ((,class (:foreground ,solarized-emph :background ,solarized-hl :bold t))))
+     `(escape-glyph ((,class (:foreground ,violet))))
+
+     ;; compilation
+     `(compilation-column-face ((,class (:foreground ,yellow))))
+     `(compilation-enter-directory-face ((,class (:foreground ,green))))
+     `(compilation-error-face ((,class (:foreground ,red :weight bold :underline t))))
+     `(compilation-face ((,class (:foreground ,solarized-fg))))
+     `(compilation-info-face ((,class (:foreground ,blue))))
+     `(compilation-info ((,class (:foreground ,green :underline t))))
+     `(compilation-leave-directory-face ((,class (:foreground ,green))))
+     `(compilation-line-face ((,class (:foreground ,yellow))))
+     `(compilation-line-number ((,class (:foreground ,yellow))))
+     `(compilation-message-face ((,class (:foreground ,blue))))
+     `(compilation-warning-face ((,class (:foreground ,yellow :weight bold :underline t))))
+
+     `(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 ,solarized-bg))))
+     `(cua-rectangle ((,class (:inherit region :background ,magenta :foreground ,solarized-bg))))
+     `(cua-rectangle-noselect ((,class (:inherit region :background ,solarized-hl
+                                                 :foreground ,solarized-comments))))
+
+     ;; diary
+     `(diary ((,class (:foreground ,yellow))))
+
+     ;; dired
+     `(dired-directory ((,class (:foreground ,blue :weight normal))))
+     `(dired-flagged ((,class (:foreground ,red))))
+     `(dired-header ((,class (:foreground ,solarized-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 ,solarized-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 ,solarized-hl :foreground ,cyan))))
+     `(dropdown-list-selection-face ((,class (:background ,cyan-lc :foreground ,cyan-hc))))
+
+     ;; grep
+     `(grep-context-face ((,class (:foreground ,solarized-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 ,yellow :background ,solarized-hl :bold t))))
+     `(isearch-fail ((,class (:foreground ,red :background ,solarized-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 ,solarized-fg :background ,solarized-bg))))
+     `(minibuffer-prompt ((,class (:foreground ,solarized-emph))))
+     `(mode-line
+       ((,class (:foreground ,solarized-fg
+                             :background ,solarized-hl
+                             :box (:line-width -1 :style released-button)))))
+     `(mode-line-buffer-id ((,class (:foreground ,solarized-emph :weight bold))))
+     `(mode-line-inactive
+       ((,class (:foreground ,solarized-fg
+                             :background ,solarized-bg
+                             :box (:line-width -1 :style released-button)))))
+     `(region ((,class (:foreground ,solarized-bg :background ,solarized-emph))))
+     `(secondary-selection ((,class (:background ,solarized-hl))))
+
+     `(trailing-whitespace ((,class (:background ,red))))
+     `(vertical-border ((,class (:foreground ,solarized-fg))))
+
+     ;; font lock
+     `(font-lock-builtin-face ((,class (:foreground ,blue :slant italic))))
+     `(font-lock-comment-delimiter-face ((,class (:foreground ,solarized-comments))))
+     `(font-lock-comment-face ((,class (:foreground ,solarized-comments))))
+     `(font-lock-constant-face ((,class (:foreground ,blue :weight bold))))
+     `(font-lock-doc-face ((,class (:foreground ,cyan :slant italic))))
+     `(font-lock-doc-string-face ((,class (:foreground ,blue))))
+     `(font-lock-function-name-face ((,class (:foreground ,blue))))
+     `(font-lock-keyword-face ((,class (:foreground ,green :weight bold))))
+     `(font-lock-negation-char-face ((,class (:foreground ,solarized-fg))))
+     `(font-lock-preprocessor-face ((,class (:foreground ,blue))))
+     `(font-lock-string-face ((,class (:foreground ,cyan))))
+     `(font-lock-type-face ((,class (:foreground ,yellow))))
+     `(font-lock-variable-name-face ((,class (:foreground ,blue))))
+     `(font-lock-warning-face ((,class (:foreground ,orange :weight bold :underline t))))
+
+     `(c-annotation-face ((,class (:inherit font-lock-constant-face))))
+
+     ;;; external
+
+     ;; ace-jump-mode
+     `(ace-jump-face-background
+       ((,class (:foreground ,solarized-comments :background ,solarized-bg :inverse-video nil))))
+     `(ace-jump-face-foreground
+       ((,class (:foreground ,red :background ,solarized-bg :inverse-video nil))))
+
+     ;; auto-complete
+     `(ac-candidate-face ((,class (:background ,solarized-hl :foreground ,cyan))))
+     `(ac-selection-face ((,class (:background ,cyan-lc :foreground ,cyan-hc))))
+     `(ac-candidate-mouse-face ((,class (:background ,cyan-hc :foreground ,cyan-lc))))
+     `(ac-completion-face ((,class (:foreground ,solarized-emph :underline t))))
+     `(ac-gtags-candidate-face ((,class (:background ,solarized-hl :foreground ,blue))))
+     `(ac-gtags-selection-face ((,class (:background ,blue-lc :foreground ,blue-hc))))
+     `(ac-yasnippet-candidate-face ((,class (:background ,solarized-hl :foreground ,yellow))))
+     `(ac-yasnippet-selection-face ((,class (:background ,yellow-lc :foreground ,yellow-hc))))
+
+     ;; auto highlight symbol
+     `(ahs-definition-face ((,class (:foreground ,solarized-bg :background ,blue :underline t))))
+     `(ahs-edit-mode-face ((,class (:foreground ,solarized-bg :background ,yellow))))
+     `(ahs-face ((,class (:foreground ,solarized-bg :background ,blue))))
+     `(ahs-plugin-bod-face ((,class (:foreground ,solarized-bg :background ,blue))))
+     `(ahs-plugin-defalt-face ((,class (:foreground ,solarized-bg :background ,cyan))))
+     `(ahs-plugin-whole-buffer-face ((,class (:foreground ,solarized-bg :background ,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 ,solarized-fg))))
+     `(android-mode-verbose-face ((,class (:foreground ,solarized-comments))))
+     `(android-mode-warning-face ((,class (:foreground ,yellow))))
+
+     ;; bm
+     `(bm-face ((,class (:background ,yellow-lc :foreground ,solarized-bg))))
+     `(bm-fringe-face ((,class (:background ,yellow-lc :foreground ,solarized-bg))))
+     `(bm-fringe-persistent-face ((,class (:background ,green-lc :foreground ,solarized-bg))))
+     `(bm-persistent-face ((,class (:background ,green-lc :foreground ,solarized-bg))))
+
+     ;; calfw
+     `(cfw:face-day-title ((,class (:background ,solarized-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 ,solarized-comments))))
+     `(cfw:face-grid ((,class (:foreground ,solarized-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 variable-pitch :foreground ,yellow :weight bold :height 2.0))))
+     `(cfw:face-today ((,class (:weight bold :background ,solarized-hl :foreground nil))))
+     `(cfw:face-today-title ((,class (:background ,yellow-lc :foreground ,yellow-hc :weight bold))))
+     `(cfw:face-toolbar ((,class (:background ,solarized-hl :foreground ,solarized-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))))
+
+     ;; ctable
+     `(ctbl:face-cell-select ((,class (:background ,blue :foreground ,solarized-bg))))
+     `(ctbl:face-continue-bar ((,class (:background ,solarized-hl :foreground ,solarized-bg))))
+     `(ctbl:face-row-select ((,class (:background ,cyan :foreground ,solarized-bg))))
+
+     ;; coffee
+     `(coffee-mode-class-name ((,class (:foreground ,yellow :weight bold))))
+     `(coffee-mode-function-param ((,class (:foreground ,violet :slant italic))))
+
+     ;; custom
+     `(custom-variable-tag ((,class (:foreground ,cyan))))
+     `(custom-comment-tag ((,class (:foreground ,solarized-comments))))
+     `(custom-group-tag ((,class (:foreground ,blue))))
+     `(custom-state ((,class (:foreground ,green))))
+
+     ;; diff
+     `(diff-added ((,class (:foreground ,green :background ,solarized-bg))))
+     `(diff-changed ((,class (:foreground ,yellow :background ,solarized-bg))))
+     `(diff-removed ((,class (:foreground ,red :background ,solarized-bg))))
+     `(diff-header ((,class (:background ,solarized-bg))))
+     `(diff-file-header
+       ((,class (:background ,solarized-bg :foreground ,solarized-fg :weight bold))))
+
+     ;; ediff
+     `(ediff-fine-diff-A ((,class (:background ,orange-lc))))
+     `(ediff-fine-diff-B ((,class (:background ,green-lc))))
+     `(ediff-even-diff-A ((,class (:background ,solarized-comments :foreground ,solarized-fg-lc ))))
+     `(ediff-odd-diff-A ((,class (:background ,solarized-comments :foreground ,solarized-fg-hc ))))
+     `(ediff-even-diff-B ((,class (:background ,solarized-comments :foreground ,solarized-fg-hc ))))
+     `(ediff-odd-diff-B ((,class (:background ,solarized-comments :foreground ,solarized-fg-lc ))))
+
+     ;; epc
+     `(epc:face-title ((,class (:foreground ,magenta :weight bold))))
+
+     ;; eshell
+     `(eshell-prompt ((,class (:foreground ,yellow :weight bold))))
+     `(eshell-ls-archive ((,class (:foreground ,red :weight bold))))
+     `(eshell-ls-backup ((,class (:inherit font-lock-comment))))
+     `(eshell-ls-clutter ((,class (:inherit font-lock-comment))))
+     `(eshell-ls-directory ((,class (:foreground ,blue :weight bold))))
+     `(eshell-ls-executable ((,class (:foreground ,red :weight bold))))
+     `(eshell-ls-unreadable ((,class (:foreground ,solarized-fg))))
+     `(eshell-ls-missing ((,class (:inherit font-lock-warning))))
+     `(eshell-ls-product ((,class (:inherit font-lock-doc))))
+     `(eshell-ls-special ((,class (:foreground ,yellow :weight bold))))
+     `(eshell-ls-symlink ((,class (:foreground ,cyan :weight bold))))
+
+     ;; fic
+     `(fic-author-face ((,class (:background ,solarized-bg :foreground ,orange :underline t :slant italic))))
+     `(fic-face ((,class (:background ,solarized-bg :foreground ,orange :weight normal :slant italic))))
+
+     ;; flymake
+     `(flymake-errline
+       ((,class (:foreground ,red-hc :background ,red-lc :weight bold :underline t))))
+     `(flymake-infoline ((,class (:foreground ,green-hc :background ,green-lc))))
+     `(flymake-warnline
+       ((,class (:foreground ,yellow-hc :background ,yellow-lc :weight bold :underline t))))
+
+     ;; flycheck
+     `(flycheck-error-face
+       ((,class (:foreground ,red-hc :background ,red-lc :weight bold :underline t))))
+     `(flycheck-warning-face
+       ((,class (:foreground ,yellow-hc :background ,yellow-lc :weight bold :underline t))))
+
+     ;; flyspell
+     `(flyspell-duplicate ((,class (:foreground ,yellow :weight bold :underline t))))
+     `(flyspell-incorrect ((,class (:foreground ,red :weight bold :underline t))))
+
+     ;; erc
+     `(erc-action-face ((,class (:inherit erc-default-face))))
+     `(erc-bold-face ((,class (:weight bold))))
+     `(erc-current-nick-face ((,class (:foreground ,blue :weight bold))))
+     `(erc-dangerous-host-face ((,class (:inherit font-lock-warning))))
+     `(erc-default-face ((,class (:foreground ,solarized-fg))))
+     `(erc-direct-msg-face ((,class (:inherit erc-default))))
+     `(erc-error-face ((,class (:inherit font-lock-warning))))
+     `(erc-fool-face ((,class (:inherit erc-default))))
+     `(erc-highlight-face ((,class (:inherit hover-highlight))))
+     `(erc-input-face ((,class (:foreground ,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))))
+     `(erc-notice-face ((,class (:foreground ,green))))
+     `(erc-pal-face ((,class (:foreground ,orange :weight bold))))
+     `(erc-prompt-face ((,class (:foreground ,orange :background ,solarized-bg :weight bold))))
+     `(erc-timestamp-face ((,class (:foreground ,green))))
+     `(erc-underline-face ((t (:underline t))))
+
+     ;; git-gutter
+     `(git-gutter:added ((,class (:background ,green :foreground ,solarized-bg  :weight bold))))
+     `(git-gutter:deleted ((,class (:background ,red :foreground ,solarized-bg  :weight bold))))
+     `(git-gutter:modified ((,class (:background ,blue :foreground ,solarized-bg :weight bold))))
+     `(git-gutter:unchanged ((,class (:background ,solarized-hl :foreground ,solarized-bg  :weight bold))))
+     ;; I use the following git-gutter settings along with those faces
+     ;; (when window-system
+     ;;  (let ((symbol "."))
+     ;;    (setq git-gutter:added-sign symbol
+     ;;          git-gutter:deleted-sign symbol
+     ;;          git-gutter:modified-sign symbol
+     ;;          git-gutter:unchanged-sign " ")))
+
+     ;; 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))))
+
+     ;; guide-key
+     `(guide-key/highlight-command-face ((,class (:foreground ,blue))))
+     `(guide-key/key-face ((,class (:foreground ,solarized-comments))))
+     `(guide-key/prefix-command-face ((,class (:foreground ,green))))
+
+     ;; gnus
+     `(gnus-group-mail-1-face ((,class (:weight bold :inherit gnus-group-mail-1-empty))))
+     `(gnus-group-mail-1-empty-face ((,class (:inherit gnus-group-news-1-empty))))
+     `(gnus-group-mail-2-face ((,class (:weight bold :inherit gnus-group-mail-2-empty))))
+     `(gnus-group-mail-2-empty-face ((,class (:inherit gnus-group-news-2-empty))))
+     `(gnus-group-mail-3-face ((,class (:weight bold :inherit gnus-group-mail-3-empty))))
+     `(gnus-group-mail-3-empty-face ((,class (:inherit gnus-group-news-3-empty))))
+     `(gnus-group-mail-4-face ((,class (:weight bold :inherit gnus-group-mail-4-empty))))
+     `(gnus-group-mail-4-empty-face ((,class (:inherit gnus-group-news-4-empty))))
+     `(gnus-group-mail-5-face ((,class (:weight bold :inherit gnus-group-mail-5-empty))))
+     `(gnus-group-mail-5-empty-face ((,class (:inherit gnus-group-news-5-empty))))
+     `(gnus-group-mail-6-face ((,class (:weight bold :inherit gnus-group-mail-6-empty))))
+     `(gnus-group-mail-6-empty-face ((,class (:inherit gnus-group-news-6-empty))))
+     `(gnus-group-mail-low-face ((,class (:weight bold :inherit gnus-group-mail-low-empty))))
+     `(gnus-group-mail-low-empty-face ((,class (:inherit gnus-group-news-low-empty))))
+     `(gnus-group-news-1-face ((,class (:weight bold :inherit gnus-group-news-1-empty))))
+     `(gnus-group-news-2-face ((,class (:weight bold :inherit gnus-group-news-2-empty))))
+     `(gnus-group-news-3-face ((,class (:weight bold :inherit gnus-group-news-3-empty))))
+     `(gnus-group-news-4-face ((,class (:weight bold :inherit gnus-group-news-4-empty))))
+     `(gnus-group-news-5-face ((,class (:weight bold :inherit gnus-group-news-5-empty))))
+     `(gnus-group-news-6-face ((,class (:weight bold :inherit gnus-group-news-6-empty))))
+     `(gnus-group-news-low-face ((,class (:weight bold :inherit gnus-group-news-low-empty))))
+     `(gnus-header-content-face ((,class (:inherit message-header-other))))
+     `(gnus-header-from-face ((,class (:inherit message-header-from))))
+     `(gnus-header-name-face ((,class (:inherit message-header-name))))
+     `(gnus-header-newsgroups-face ((,class (:inherit message-header-other))))
+     `(gnus-header-subject-face ((,class (:inherit message-header-subject))))
+     `(gnus-summary-cancelled-face ((,class (:foreground ,orange))))
+     `(gnus-summary-high-ancient-face ((,class (:foreground ,blue))))
+     `(gnus-summary-high-read-face ((,class (:foreground ,green :weight bold))))
+     `(gnus-summary-high-ticked-face ((,class (:foreground ,orange :weight bold))))
+     `(gnus-summary-high-unread-face ((,class (:foreground ,solarized-fg :weight bold))))
+     `(gnus-summary-low-ancient-face ((,class (:foreground ,blue))))
+     `(gnus-summary-low-read-face ((t (:foreground ,green))))
+     `(gnus-summary-low-ticked-face ((,class (:foreground ,orange :weight bold))))
+     `(gnus-summary-low-unread-face ((,class (:foreground ,solarized-fg))))
+     `(gnus-summary-normal-ancient-face ((,class (:foreground ,blue))))
+     `(gnus-summary-normal-read-face ((,class (:foreground ,green))))
+     `(gnus-summary-normal-ticked-face ((,class (:foreground ,orange :weight bold))))
+     `(gnus-summary-normal-unread-face ((,class (:foreground ,solarized-fg))))
+     `(gnus-summary-selected-face ((,class (:foreground ,yellow :weight bold))))
+     `(gnus-cite-1-face ((,class (:foreground ,blue))))
+     `(gnus-cite-10-face ((,class (:foreground ,yellow))))
+     `(gnus-cite-11-face ((,class (:foreground ,yellow))))
+     `(gnus-cite-2-face ((,class (:foreground ,blue))))
+     `(gnus-cite-3-face ((,class (:foreground ,blue))))
+     `(gnus-cite-4-face ((,class (:foreground ,green))))
+     `(gnus-cite-5-face ((,class (:foreground ,green))))
+     `(gnus-cite-6-face ((,class (:foreground ,green))))
+     `(gnus-cite-7-face ((,class (:foreground ,red))))
+     `(gnus-cite-8-face ((,class (:foreground ,red))))
+     `(gnus-cite-9-face ((,class (:foreground ,red))))
+     `(gnus-group-news-1-empty-face ((,class (:foreground ,yellow))))
+     `(gnus-group-news-2-empty-face ((,class (:foreground ,green))))
+     `(gnus-group-news-3-empty-face ((,class (:foreground ,green))))
+     `(gnus-group-news-4-empty-face ((,class (:foreground ,blue))))
+     `(gnus-group-news-5-empty-face ((,class (:foreground ,blue))))
+     `(gnus-group-news-6-empty-face ((,class (:foreground ,solarized-bg))))
+     `(gnus-group-news-low-empty-face ((,class (:foreground ,solarized-bg))))
+     `(gnus-signature-face ((,class (:foreground ,yellow))))
+     `(gnus-x-face ((,class (:background ,solarized-fg :foreground ,solarized-bg))))
+
+     ;; helm (these probably needs tweaking)
+     `(helm-apt-deinstalled ((,class (:foreground ,solarized-comments))))
+     `(helm-apt-installed ((,class (:foreground ,green))))
+     `(helm-bookmark-directory ((,class (:inherit helm-ff-directory))))
+     `(helm-bookmark-file ((,class (:foreground ,solarized-fg))))
+     `(helm-bookmark-gnus ((,class (:foreground ,cyan))))
+     `(helm-bookmark-info ((,class (:foreground ,green))))
+     `(helm-bookmark-man ((,class (:foreground ,violet))))
+     `(helm-bookmark-w3m ((,class (:foreground ,yellow))))
+     `(helm-bookmarks-su ((,class (:foreground ,orange))))
+     `(helm-buffer-not-saved ((,class (:foreground ,orange))))
+     `(helm-buffer-saved-out ((,class (:foreground ,red :background ,solarized-bg
+                                                   :inverse-video t))))
+     `(helm-buffer-size ((,class (:foreground ,solarized-comments))))
+     `(helm-candidate-number ((,class (:background ,solarized-hl :foreground ,solarized-emph
+                                                   :bold t))))
+     `(helm-ff-directory ((,class (:background ,solarized-bg  :foreground ,blue))))
+     `(helm-ff-executable ((,class (:foreground ,green))))
+     `(helm-ff-file ((,class (:background ,solarized-bg :foreground ,solarized-fg))))
+     `(helm-ff-invalid-symlink ((,class (:background ,solarized-bg :foreground ,orange
+                                                     :slant italic))))
+     `(helm-ff-prefix ((,class (:background ,yellow :foreground ,solarized-bg))))
+     `(helm-ff-symlink ((,class (:foreground ,cyan))))
+     `(helm-grep-file ((,class (:foreground ,cyan :underline t))))
+     `(helm-grep-finish ((,class (:foreground ,green))))
+     `(helm-grep-lineno ((,class (:foreground ,orange))))
+     `(helm-grep-match ((,class (:inherit match))))
+     `(helm-grep-running ((,class (:foreground ,red))))
+     `(helm-header ((,class (:inherit header-line))))
+     `(helm-lisp-completion-info ((,class (:foreground ,solarized-fg))))
+     `(helm-lisp-show-completion ((,class (:foreground ,yellow  :background ,solarized-hl
+                                                       :bold t))))
+     `(helm-M-x-key ((,class (:foreground ,orange :underline t))))
+     `(helm-moccur-buffer ((,class (:foreground ,cyan :underline t))))
+     `(helm-match ((,class (:inherit match))))
+     `(helm-selection ((,class (:background ,solarized-hl :underline t))))
+     `(helm-selection-line ((,class (:background ,solarized-hl :foreground ,solarized-emph
+                                                 :underline nil))))
+     `(helm-separator ((,class (:foreground ,red))))
+     `(helm-source-header ((,class (:background ,blue-lc :foreground ,solarized-bg
+                                                :underline nil))))
+     `(helm-time-zone-current ((,class (:foreground ,green))))
+     `(helm-time-zone-home ((,class (:foreground ,red))))
+     `(helm-visible-mark ((,class (:background ,solarized-bg :foreground ,magenta :bold t))))
+
+     ;; hi-lock-mode
+     `(hi-yellow ((,class (:foreground ,yellow-lc :background ,yellow-hc))))
+     `(hi-pink ((,class (:foreground ,magenta-lc :background ,magenta-hc))))
+     `(hi-green ((,class (:foreground ,green-lc :background ,green-hc))))
+     `(hi-blue ((,class (:foreground ,blue-lc :background ,blue-hc))))
+     `(hi-black-b ((,class (:foreground ,solarized-emph :background ,solarized-bg :weight bold))))
+     `(hi-blue-b ((,class (:foreground ,blue-lc :weight bold))))
+     `(hi-green-b ((,class (:foreground ,green-lc :weight bold))))
+     `(hi-red-b ((,class (:foreground ,red :weight bold))))
+     `(hi-black-hb ((,class (:foreground ,solarized-emph :background ,solarized-bg :weight bold))))
+
+     ;; highlight-changes
+     `(highlight-changes ((,class (:foreground ,orange))))
+     `(highlight-changes-delete ((,class (:foreground ,red :underline t))))
+
+     ;; hl-line-mode
+     `(hl-line ((,class (:background ,solarized-hl))))
+     `(hl-line-face ((,class (:background ,solarized-hl))))
+
+     ;; ido-mode
+     `(ido-first-match ((,class (:foreground ,green :weight bold))))
+     `(ido-only-match ((,class (:foreground ,solarized-bg :background ,green :weight bold))))
+     `(ido-subdir ((,class (:foreground ,blue))))
+     `(ido-incomplete-regexp ((,class (:foreground ,red :weight bold ))))
+     `(ido-indicator ((,class (:background ,red :foreground ,solarized-bg :width condensed))))
+     `(ido-virtual ((,class (:foreground ,cyan))))
+
+     `(jabber-activity-face ((,class (:weight bold :foreground ,red))))
+     `(jabber-activity-personal-face ((,class (:weight bold :foreground ,blue))))
+     `(jabber-chat-error ((,class (:weight bold :foreground ,red))))
+     `(jabber-chat-prompt-foreign ((,class (:weight bold :foreground ,red))))
+     `(jabber-chat-prompt-local ((,class (:weight bold :foreground ,blue))))
+     `(jabber-chat-prompt-system ((,class (:weight bold :foreground ,green))))
+     `(jabber-chat-text-foreign ((,class (:foreground ,base1))))
+     `(jabber-chat-text-local ((,class (:foreground ,base0))))
+     `(jabber-chat-rare-time-face ((,class (:underline t :foreground ,green))))
+     `(jabber-roster-user-away ((,class (:slant italic :foreground ,green))))
+     `(jabber-roster-user-chatty ((,class (:weight bold :foreground ,orange))))
+     `(jabber-roster-user-dnd ((,class (:slant italic :foreground ,red))))
+     `(jabber-roster-user-error ((,class (:weight light :slant italic :foreground ,red))))
+     `(jabber-roster-user-offline ((,class (:foreground ,base01))))
+     `(jabber-roster-user-online ((,class (:weight bold :foreground ,blue))))
+     `(jabber-roster-user-xa ((,class (:slant italic :foreground ,magenta))))
+
+     ;; js2-mode colors
+     `(js2-error ((,class (:foreground ,red))))
+     `(js2-external-variable ((,class (:foreground ,orange))))
+     `(js2-function-param ((,class (:foreground ,green))))
+     `(js2-instance-member ((,class (:foreground ,magenta))))
+     `(js2-jsdoc-html-tag-delimiter ((,class (:foreground ,cyan))))
+     `(js2-jsdoc-html-tag-name ((,class (:foreground ,orange))))
+     `(js2-jsdoc-tag ((,class (:foreground ,cyan))))
+     `(js2-jsdoc-type ((,class (:foreground ,blue))))
+     `(js2-jsdoc-value ((,class (:foreground ,violet))))
+     `(js2-magic-paren ((,class (:underline t))))
+     `(js2-private-function-call ((,class (:foreground ,yellow))))
+     `(js2-private-member ((,class (:foreground ,blue))))
+     `(js2-warning ((,class (:underline ,orange))))
+
+     ;; jedi
+     `(jedi:highlight-function-argument ((,class (:inherit bold))))
+
+     ;; linum-mode
+     `(linum ((,class (:foreground ,solarized-fg :background ,solarized-bg))))
+
+     ;; magit
+     `(magit-section-title ((,class (:foreground ,yellow :weight bold))))
+     `(magit-branch ((,class (:foreground ,orange :weight bold))))
+     `(magit-item-highlight ((,class (:background ,solarized-hl))))
+     `(magit-log-author ((,class (:foreground ,cyan))))
+     `(magit-log-graph ((,class (:foreground ,solarized-comments))))
+     `(magit-log-head-label-bisect-bad ((,class (:background ,red-hc :foreground ,red-lc :box 1))))
+     `(magit-log-head-label-bisect-good ((,class (:background ,green-hc :foreground ,green-lc
+                                                              :box 1))))
+     `(magit-log-head-label-default ((,class (:background ,solarized-hl :box 1))))
+     `(magit-log-head-label-local ((,class (:background ,blue-lc :foreground ,blue-hc :box 1))))
+     `(magit-log-head-label-patches ((,class (:background ,red-lc :foreground ,red-hc :box 1))))
+     `(magit-log-head-label-remote ((,class (:background ,green-lc :foreground ,green-hc :box 1))))
+     `(magit-log-head-label-tags ((,class (:background ,yellow-lc :foreground ,yellow-hc :box 1))))
+     `(magit-log-sha1 ((,class (:foreground ,yellow))))
+
+     ;; message-mode
+     `(message-cited-text ((,class (:foreground ,solarized-comments))))
+     `(message-header-name ((,class (:foreground ,green))))
+     `(message-header-other ((,class (:foreground ,green))))
+     `(message-header-to ((,class (:foreground ,yellow :weight bold))))
+     `(message-header-cc ((,class (:foreground ,orange :weight bold))))
+     `(message-header-newsgroups ((,class (:foreground ,yellow :weight bold))))
+     `(message-header-subject ((,class (:foreground ,orange))))
+     `(message-header-xheader ((,class (:foreground ,cyan))))
+     `(message-mml ((,class (:foreground ,yellow :weight bold))))
+     `(message-separator ((,class (:foreground ,solarized-comments :slant italic))))
+
+     ;; mew
+     `(mew-face-header-subject ((,class (:foreground ,orange))))
+     `(mew-face-header-from ((,class (:foreground ,yellow))))
+     `(mew-face-header-date ((,class (:foreground ,green))))
+     `(mew-face-header-to ((,class (:foreground ,red))))
+     `(mew-face-header-key ((,class (:foreground ,green))))
+     `(mew-face-header-private ((,class (:foreground ,green))))
+     `(mew-face-header-important ((,class (:foreground ,blue))))
+     `(mew-face-header-marginal ((,class (:foreground ,solarized-fg :weight bold))))
+     `(mew-face-header-warning ((,class (:foreground ,red))))
+     `(mew-face-header-xmew ((,class (:foreground ,green))))
+     `(mew-face-header-xmew-bad ((,class (:foreground ,red))))
+     `(mew-face-body-url ((,class (:foreground ,orange))))
+     `(mew-face-body-comment ((,class (:foreground ,solarized-fg :slant italic))))
+     `(mew-face-body-cite1 ((,class (:foreground ,green))))
+     `(mew-face-body-cite2 ((,class (:foreground ,blue))))
+     `(mew-face-body-cite3 ((,class (:foreground ,orange))))
+     `(mew-face-body-cite4 ((,class (:foreground ,yellow))))
+     `(mew-face-body-cite5 ((,class (:foreground ,red))))
+     `(mew-face-mark-review ((,class (:foreground ,blue))))
+     `(mew-face-mark-escape ((,class (:foreground ,green))))
+     `(mew-face-mark-delete ((,class (:foreground ,red))))
+     `(mew-face-mark-unlink ((,class (:foreground ,yellow))))
+     `(mew-face-mark-refile ((,class (:foreground ,green))))
+     `(mew-face-mark-unread ((,class (:foreground ,red))))
+     `(mew-face-eof-message ((,class (:foreground ,green))))
+     `(mew-face-eof-part ((,class (:foreground ,yellow))))
+
+     ;; mingus
+     `(mingus-directory-face ((,class (:foreground ,blue))))
+     `(mingus-pausing-face ((,class (:foreground ,magenta))))
+     `(mingus-playing-face ((,class (:foreground ,cyan))))
+     `(mingus-playlist-face ((,class (:foreground ,cyan ))))
+     `(mingus-song-file-face ((,class (:foreground ,yellow))))
+     `(mingus-stopped-face ((,class (:foreground ,red))))
+
+     ;; moccur
+     `(moccur-current-line-face ((,class (:underline t))))
+     `(moccur-edit-done-face ((,class
+                               (:foreground ,solarized-comments
+                                            :background ,solarized-bg
+                                            :slant italic))))
+     `(moccur-edit-face
+       ((,class (:background ,yellow :foreground ,solarized-bg))))
+     `(moccur-edit-file-face ((,class (:background ,solarized-hl))))
+     `(moccur-edit-reject-face ((,class (:foreground ,red))))
+     `(moccur-face ((,class (:background ,solarized-hl :foreground ,solarized-emph
+                                         :weight bold))))
+     `(search-buffers-face ((,class (:background ,solarized-hl :foreground ,solarized-emph
+                                                 :weight bold))))
+     `(search-buffers-header-face ((,class (:background ,solarized-hl :foreground ,yellow
+                                                        :weight bold))))
+
+     ;; mu4e
+     `(mu4e-cited-1-face ((,class (:foreground ,green :slant italic :weight normal))))
+     `(mu4e-cited-2-face ((,class (:foreground ,blue :slant italic :weight normal))))
+     `(mu4e-cited-3-face ((,class (:foreground ,orange :slant italic :weight normal))))
+     `(mu4e-cited-4-face ((,class (:foreground ,yellow :slant italic :weight normal))))
+     `(mu4e-cited-5-face ((,class (:foreground ,cyan :slant italic :weight normal))))
+     `(mu4e-cited-6-face ((,class (:foreground ,green :slant italic :weight normal))))
+     `(mu4e-cited-7-face ((,class (:foreground ,blue :slant italic :weight normal))))
+     `(mu4e-flagged-face ((,class (:foreground ,magenta :weight bold))))
+     `(mu4e-view-url-number-face ((,class (:foreground ,orange :weight bold))))
+     `(mu4e-warning-face ((,class (:foreground ,red :slant normal :weight bold))))
+
+     ;; mumamo
+     `(mumamo-background-chunk-submode1 ((,class (:background ,solarized-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 ,solarized-fg))))
+     `(nav-face-hfile ((,class (:foreground ,red))))
+
+     ;; nav-flash
+     `(nav-flash-face ((,class (:background ,solarized-hl))))
+
+     ;; org-mode
+     `(org-agenda-structure
+       ((,class (:inherit font-lock-comment-face :foreground ,magenta :inverse-video t))))
+     `(org-agenda-date
+       ((,class (:foreground ,solarized-fg :background ,solarized-hl :weight bold
+                             :box (:line-width 4 :color ,solarized-hl) ))) t)
+     `(org-agenda-date-weekend ((,class (:inherit org-agenda-date :slant italic))) t)
+     `(org-agenda-date-today
+       ((,class (:inherit org-agenda-date :slant italic underline: t))) t)
+     `(org-agenda-done ((,class (:foreground ,green))) t)
+     `(org-archived ((,class (:foreground ,solarized-comments :weight normal))))
+     `(org-block ((,class (:foreground ,solarized-comments))))
+     `(org-block-begin-line ((,class (:foreground ,solarized-comments :slant italic))))
+     `(org-checkbox ((,class (:background ,solarized-bg :foreground ,solarized-fg
+                                          :box (:line-width 1 :style released-button)))))
+     `(org-code ((,class (:foreground ,solarized-comments))))
+     `(org-date ((,class (:foreground ,blue :underline t))))
+     `(org-done ((,class (:weight bold :foreground ,green))))
+     `(org-ellipsis ((,class (:foreground ,solarized-comments))))
+     `(org-formula ((,class (:foreground ,yellow))))
+     `(org-headline-done ((,class (:foreground ,green))))
+     `(org-hide ((,class (:foreground ,solarized-bg))))
+     `(org-level-1 ((,class (:foreground ,orange))))
+     `(org-level-2 ((,class (:foreground ,green))))
+     `(org-level-3 ((,class (:foreground ,blue))))
+     `(org-level-4 ((,class (:foreground ,yellow))))
+     `(org-level-5 ((,class (:foreground ,cyan))))
+     `(org-level-6 ((,class (:foreground ,green))))
+     `(org-level-7 ((,class (:foreground ,red))))
+     `(org-level-8 ((,class (:foreground ,blue))))
+     `(org-link ((,class (:foreground ,yellow :underline t))))
+     `(org-sexp-date ((,class (:foreground ,violet))))
+     `(org-scheduled ((,class (:foreground ,green))))
+     `(org-scheduled-previously ((,class (:foreground ,yellow))))
+     `(org-scheduled-today ((,class (:foreground ,blue :weight normal))))
+     `(org-special-keyword ((,class (:foreground ,solarized-comments :weight bold))))
+     `(org-table ((,class (:foreground ,green))))
+     `(org-tag ((,class (:weight bold))))
+     `(org-time-grid ((,class (:foreground ,cyan))))
+     `(org-todo ((,class (:foreground ,red :weight bold))))
+     `(org-upcoming-deadline ((,class (:foreground ,yellow  :weight normal :underline nil))))
+     `(org-warning ((,class (:foreground ,orange :weight normal :underline nil))))
+     ;; org-habit (clear=blue, ready=green, alert=yellow, overdue=red. future=lower contrast)
+     `(org-habit-clear-face ((,class (:background ,blue-lc :foreground ,blue-hc))))
+     `(org-habit-clear-future-face ((,class (:background ,blue-lc))))
+     `(org-habit-ready-face ((,class (:background ,green-lc :foreground ,green))))
+     `(org-habit-ready-future-face ((,class (:background ,green-lc))))
+     `(org-habit-alert-face ((,class (:background ,yellow :foreground ,yellow-lc))))
+     `(org-habit-alert-future-face ((,class (:background ,yellow-lc))))
+     `(org-habit-overdue-face ((,class (:background ,red :foreground ,red-lc))))
+     `(org-habit-overdue-future-face ((,class (:background ,red-lc))))
+     ;; latest additions
+     `(org-agenda-dimmed-todo-face ((,class (:foreground ,solarized-comments))))
+     `(org-agenda-restriction-lock ((,class (:background ,yellow))))
+     `(org-clock-overlay ((,class (:background ,yellow))))
+     `(org-column ((,class (:background ,solarized-hl :strike-through nil
+                                        :underline nil :slant normal :weight normal))))
+     `(org-column-title ((,class (:background ,solarized-hl :underline t :weight bold))))
+     `(org-date-selected ((,class (:foreground ,red :inverse-video t))))
+     `(org-document-info ((,class (:foreground ,solarized-fg))))
+     `(org-document-title ((,class (:foreground ,solarized-emph  :weight bold :height 1.44))))
+     `(org-drawer ((,class (:foreground ,cyan))))
+     `(org-footnote ((,class (:foreground ,magenta :underline t))))
+     `(org-latex-and-export-specials ((,class (:foreground ,orange))))
+     `(org-mode-line-clock-overrun ((,class (:inherit modeline :background ,red))))
+
+     ;; outline
+     `(outline-8 ((,class (:inherit default))))
+     `(outline-7 ((,class (:inherit outline-8 :height 1.0))))
+     `(outline-6 ((,class (:inherit outline-7 :height 1.0))))
+     `(outline-5 ((,class (:inherit outline-6 :height 1.0))))
+     `(outline-4 ((,class (:inherit outline-5 :height 1.0))))
+     `(outline-3 ((,class (:inherit outline-4 :height 1.0))))
+     `(outline-2 ((,class (:inherit outline-3 :height 1.0))))
+     `(outline-1 ((,class (:inherit outline-2 :height 1.0))))
+
+     ;; pretty-mode
+     `(pretty-mode-symbol-face  ((,class (:foreground ,green))))
+
+     ;; popup
+     `(popup-face ((,class (:background ,solarized-hl :foreground ,solarized-fg))))
+     `(popup-isearch-match ((,class (:background ,yellow :foreground ,solarized-bg))))
+     `(popup-menu-face ((,class (:background ,solarized-hl :foreground ,solarized-fg))))
+     `(popup-menu-mouse-face ((,class (:background ,blue :foreground ,solarized-fg))))
+     `(popup-menu-selection-face ((,class (:background ,magenta :foreground ,solarized-bg))))
+     `(popup-scroll-bar-background-face ((,class (:background ,solarized-comments))))
+     `(popup-scroll-bar-foreground-face ((,class (:background ,solarized-emph))))
+     `(popup-tip-face ((,class (:background ,solarized-hl :foreground ,solarized-fg))))
+
+     ;; rainbow-delimiters
+     `(rainbow-delimiters-depth-1-face ((,class (:foreground ,cyan))))
+     `(rainbow-delimiters-depth-2-face ((,class (:foreground ,yellow))))
+     `(rainbow-delimiters-depth-3-face ((,class (:foreground ,blue))))
+     `(rainbow-delimiters-depth-4-face ((,class (:foreground ,orange))))
+     `(rainbow-delimiters-depth-5-face ((,class (:foreground ,green))))
+     `(rainbow-delimiters-depth-6-face ((,class (:foreground ,yellow))))
+     `(rainbow-delimiters-depth-7-face ((,class (:foreground ,blue))))
+     `(rainbow-delimiters-depth-8-face ((,class (:foreground ,orange))))
+     `(rainbow-delimiters-depth-9-face ((,class (:foreground ,green))))
+     `(rainbow-delimiters-depth-10-face ((,class (:foreground ,yellow))))
+     `(rainbow-delimiters-depth-11-face ((,class (:foreground ,blue))))
+     `(rainbow-delimiters-depth-12-face ((,class (:foreground ,orange))))
+     `(rainbow-delimiters-unmatched-face
+       ((,class (:foreground ,solarized-fg :background ,solarized-bg :inverse-video t))))
+
+     ;; rst-mode
+     `(rst-level-1-face ((,class (:background ,yellow   :foreground ,solarized-bg))))
+     `(rst-level-2-face ((,class (:background ,cyan    :foreground ,solarized-bg))))
+     `(rst-level-3-face ((,class (:background ,blue    :foreground ,solarized-bg))))
+     `(rst-level-4-face ((,class (:background ,violet  :foreground ,solarized-bg))))
+     `(rst-level-5-face ((,class (:background ,magenta :foreground ,solarized-bg))))
+     `(rst-level-6-face ((,class (:background ,red     :foreground ,solarized-bg))))
+
+     ;; rpm-mode
+     `(rpm-spec-dir-face ((,class (:foreground ,green))))
+     `(rpm-spec-doc-face ((,class (:foreground ,green))))
+     `(rpm-spec-ghost-face ((,class (:foreground ,red))))
+     `(rpm-spec-macro-face ((,class (:foreground ,yellow))))
+     `(rpm-spec-obsolete-tag-face ((,class (:foreground ,red))))
+     `(rpm-spec-package-face ((,class (:foreground ,red))))
+     `(rpm-spec-section-face ((,class (:foreground ,yellow))))
+     `(rpm-spec-tag-face ((,class (:foreground ,blue))))
+     `(rpm-spec-var-face ((,class (:foreground ,red))))
+
+     ;; sh-mode
+     `(sh-quoted-exec ((,class (:foreground ,violet :weight bold))))
+     `(sh-escaped-newline ((,class (:foreground ,yellow :weight bold))))
+     `(sh-heredoc ((,class (:foreground ,yellow :weight bold))))
+
+     ;; smartparens
+     `(sp-pair-overlay-face ((,class (:background ,solarized-hl))))
+     `(sp-wrap-overlay-face ((,class (:background ,solarized-hl))))
+     `(sp-wrap-tag-overlay-face ((,class (:background ,solarized-hl))))
+
+     ;; show-paren
+     `(show-paren-match
+       ((,class (:foreground ,cyan :background ,solarized-bg :weight normal :inverse-video t))))
+     `(show-paren-mismatch
+       ((,class (:foreground ,red :background ,solarized-bg :weight normal :inverse-video t))))
+
+     ;; mic-paren
+     `(paren-face-match
+       ((,class (:foreground ,cyan :background ,solarized-bg :weight normal :inverse-video t))))
+     `(paren-face-mismatch
+       ((,class (:foreground ,red :background ,solarized-bg :weight normal :inverse-video t))))
+     `(paren-face-no-match
+       ((,class (:foreground ,red :background ,solarized-bg :weight normal :inverse-video t))))
+
+     ;; SLIME
+     `(slime-repl-inputed-output-face ((,class (:foreground ,red))))
+
+     ;; speedbar
+     `(speedbar-button-face ((,class (:inherit variable-pitch :foreground ,solarized-comments))))
+     `(speedbar-directory-face ((,class (:inherit variable-pitch :foreground ,blue))))
+     `(speedbar-file-face ((,class (:inherit variable-pitch :foreground ,solarized-fg))))
+     `(speedbar-highlight-face ((,class (:inherit variable-pitch :background ,solarized-hl))))
+     `(speedbar-selected-face ((,class (:inherit variable-pitch :foreground ,yellow :underline t))))
+     `(speedbar-separator-face ((,class (:inherit variable-pitch
+                                                  :background ,blue :foreground ,solarized-bg
+                                                  :overline ,cyan-lc))))
+     `(speedbar-tag-face ((,class (:inherit variable-pitch :foreground ,green))))
+
+     ;; sunrise commander headings
+     `(sr-active-path-face ((,class (:background ,blue :foreground ,solarized-bg
+                                                 :height 100  :weight bold))))
+     `(sr-editing-path-face ((,class (:background ,yellow :foreground ,solarized-bg
+                                                  :weight bold :height 100))))
+     `(sr-highlight-path-face ((,class (:background ,green :foreground ,solarized-bg
+                                                    :weight bold :height 100))))
+     `(sr-passive-path-face ((,class (:background ,solarized-comments :foreground ,solarized-bg
+                                                  :weight bold :height 100))))
+     ;; 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 ,solarized-bg
+                                                    :weight bold))))
+     `(sr-alt-marked-file-face ((,class (:background ,magenta :foreground ,solarized-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 ,solarized-fg))))
+     `(sr-encrypted-face ((,class (:foreground ,solarized-fg))))
+     `(sr-log-face ((,class (:foreground ,solarized-fg))))
+     `(sr-packaged-face ((,class (:foreground ,solarized-fg))))
+     `(sr-html-face ((,class (:foreground ,solarized-fg))))
+     `(sr-xml-face ((,class (:foreground ,solarized-fg))))
+     ;; sunrise commander misc
+     `(sr-clex-hotchar-face ((,class (:background ,red  :foreground ,solarized-bg :weight bold))))
+
+     ;; table
+     `(table-cell ((,class (:foreground ,solarized-fg :background ,solarized-hl))))
+
+     ;; term
+     `(term-color-black ((t (:foreground ,base03
+                                         :background ,base02))))
+     `(term-color-red ((t (:foreground ,red
+                                       :background ,red-d))))
+     `(term-color-green ((t (:foreground ,green
+                                         :background ,green-d))))
+     `(term-color-yellow ((t (:foreground ,yellow
+                                          :background ,yellow-d))))
+     `(term-color-blue ((t (:foreground ,blue
+                                        :background ,blue-d))))
+     `(term-color-magenta ((t (:foreground ,magenta
+                                           :background ,magenta-d))))
+     `(term-color-cyan ((t (:foreground ,cyan
+                                        :background ,cyan-d))))
+     `(term-color-white ((t (:foreground ,base00
+                                         :background ,base0))))
+     '(term-default-fg-color ((t (:inherit term-color-white))))
+     '(term-default-bg-color ((t (:inherit term-color-black))))
+
+
+     ;; 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 variable-pitch))))
+
+     ;; tuareg
+     `(tuareg-font-lock-governing-face ((,class (:foreground ,magenta :weight bold))))
+     `(tuareg-font-lock-multistage-face ((,class (:foreground ,blue :background ,solarized-hl :weight bold))))
+     `(tuareg-font-lock-operator-face ((,class (:foreground ,solarized-emph))))
+     `(tuareg-font-lock-error-face ((,class (:foreground ,yellow :background ,red :weight bold))))
+     `(tuareg-font-lock-interactive-output-face ((,class (:foreground ,cyan))))
+     `(tuareg-font-lock-interactive-error-face ((,class (:foreground ,red))))
+
+     ;; undo-tree
+     `(undo-tree-visualizer-default-face
+       ((,class (:foreground ,solarized-comments :background ,solarized-bg))))
+     `(undo-tree-visualizer-unmodified-face ((,class (:foreground ,green))))
+     `(undo-tree-visualizer-current-face ((,class (:foreground ,blue :inverse-video t))))
+     `(undo-tree-visualizer-active-branch-face
+       ((,class (:foreground ,solarized-emph :background ,solarized-bg :weight bold))))
+     `(undo-tree-visualizer-register-face ((,class (:foreground ,yellow))))
+
+     ;; volatile highlights
+     `(vhl/default-face ((,class (:background ,green-lc :foreground ,green-hc))))
+
+     ;; w3m
+     `(w3m-anchor ((,class (:inherit link))))
+     `(w3m-arrived-anchor ((,class (:inherit link-visited))))
+     `(w3m-form ((,class (:background ,solarized-bg :foreground ,solarized-fg))))
+     `(w3m-header-line-location-title ((,class (:background ,solarized-hl :foreground ,yellow))))
+     `(w3m-header-line-location-content ((,class (:background ,solarized-hl :foreground ,solarized-fg))))
+     `(w3m-bold ((,class (:foreground ,solarized-emph :weight bold))))
+     `(w3m-image-anchor ((,class (:background ,solarized-bg :foreground ,cyan :inherit link))))
+     `(w3m-image ((,class (:background ,solarized-bg :foreground ,cyan))))
+     `(w3m-lnum-minibuffer-prompt ((,class (:foreground ,solarized-emph))))
+     `(w3m-lnum-match ((,class (:background ,solarized-hl))))
+     `(w3m-lnum ((,class (:underline nil :bold nil :foreground ,red))))
+     `(w3m-session-select ((,class (:foreground ,solarized-fg))))
+     `(w3m-session-selected ((,class (:foreground ,solarized-emph :bold t :underline t))))
+     `(w3m-tab-background ((,class (:background ,solarized-bg :foreground ,solarized-fg))))
+     `(w3m-tab-selected-background ((,class (:background ,solarized-bg :foreground ,solarized-fg))))
+     `(w3m-tab-mouse ((,class (:background ,solarized-hl :foreground ,yellow))))
+     `(w3m-tab-selected ((,class (:background ,solarized-hl :foreground ,solarized-emph :bold t))))
+     `(w3m-tab-unselected ((,class (:background ,solarized-hl :foreground ,solarized-fg))))
+     `(w3m-tab-selected-retrieving ((,class (:background ,solarized-hl :foreground ,red))))
+     `(w3m-tab-unselected-retrieving ((,class (:background ,solarized-hl :foreground ,orange))))
+     `(w3m-tab-unselected-unseen ((,class (:background ,solarized-hl :foreground ,violet))))
+
+     ;; web-mode
+     `(web-mode-builtin-face ((,class (:foreground ,red))))
+     `(web-mode-comment-face ((,class (:foreground ,solarized-comments))))
+     `(web-mode-constant-face ((,class (:foreground ,blue :weight bold))))
+     `(web-mode-css-at-rule-face ((,class (:foreground ,violet :slant italic))))
+     `(web-mode-css-prop-face ((,class (:foreground ,violet))))
+     `(web-mode-css-pseudo-class-face ((,class (:foreground ,green :slant italic))))
+     `(web-mode-css-rule-face ((,class (:foreground ,blue))))
+     `(web-mode-doctype-face ((,class (:foreground ,solarized-comments
+                                                   :slant italic :weight bold))))
+     `(web-mode-folded-face ((,class (:underline t))))
+     `(web-mode-function-name-face ((,class (:foreground ,blue))))
+     `(web-mode-html-attr-name-face ((,class (:foreground ,blue :slant normal))))
+     `(web-mode-html-attr-value-face ((,class (:foreground ,cyan :slant italic))))
+     `(web-mode-html-tag-face ((,class (:foreground ,green))))
+     `(web-mode-keyword-face ((,class (:foreground ,yellow :weight bold))))
+     `(web-mode-preprocessor-face ((,class (:foreground ,yellow  :slant italic :weight bold))))
+     `(web-mode-string-face ((,class (:foreground ,cyan))))
+     `(web-mode-type-face ((,class (:foreground ,yellow))))
+     `(web-mode-variable-name-face ((,class (:foreground ,blue))))
+
+     ;; whitespace-mode
+     `(whitespace-space ((,class (:background ,solarized-bg :foreground ,yellow-lc
+                                              :inverse-video t))))
+     `(whitespace-hspace ((,class (:background ,solarized-bg :foreground ,red-lc
+                                               :inverse-video t))))
+     `(whitespace-tab ((,class (:background ,solarized-bg :foreground ,orange-lc
+                                            :inverse-video t))))
+     `(whitespace-newline ((,class (:foreground ,solarized-comments))))
+     `(whitespace-trailing ((,class (:foreground ,blue-lc :background ,solarized-bg
+                                                 :inverse-video t))))
+                                        ; removing inverse video on this
+     `(whitespace-line ((,class (:background ,solarized-bg :foreground ,magenta
+                                             :inverse-video nil))))
+     `(whitespace-space-before-tab ((,class (:background ,solarized-bg :foreground ,green-lc
+                                                         :inverse-video t))))
+     `(whitespace-indentation ((,class (:background ,solarized-bg :foreground ,magenta-lc
+                                                    :inverse-video t))))
+     `(whitespace-empty ((,class (:background ,solarized-fg :foreground ,red-lc :inverse-video t))))
+     `(whitespace-space-after-tab ((,class (:background ,solarized-bg  :foreground ,violet-lc
+                                                        :inverse-video t))))
+
+     ;; 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 ,solarized-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 ,solarized-fg))))
+     `(wl-highlight-summary-answered-face ((,class (:foreground ,blue))))
+     `(wl-highlight-summary-disposed-face ((,class (:foreground ,solarized-fg
+                                                                :slant italic))))
+     `(wl-highlight-summary-new-face ((,class (:foreground ,blue))))
+     `(wl-highlight-summary-normal-face ((,class (:foreground ,solarized-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 ,solarized-fg))))
+     `(wl-highlight-summary-displaying-face ((,class (:underline t :weight bold))))
+
+     ;; which-func-mode
+     `(which-func ((,class (:foreground ,green))))
+
+     ;; window-number-mode
+     `(window-number-face ((,class (:foreground ,green))))
+
+     ;; yascroll
+     `(yascroll:thumb-text-area
+       ((,class (:foreground ,solarized-comments :background ,solarized-comments))))
+     `(yascroll:thumb-fringe
+       ((,class (:foreground ,solarized-comments :background ,solarized-comments))))
+
+     ;; zencoding
+     `(zencoding-preview-input ((,class (:background ,solarized-hl :box ,solarized-emph)))))
+
+
+    (custom-theme-set-variables
+     theme-name
+     `(ansi-color-names-vector [,solarized-bg ,red ,green ,yellow
+                                             ,blue ,magenta ,cyan ,solarized-fg])
+     ;; fill-column-indicator
+     `(fci-rule-color ,solarized-hl)
+
+     ;; highlight-changes
+     `(highlight-changes-colors '(,magenta ,violet))
+
+     ;; highlight-tail
+     `(highlight-tail-colors
+       '((,solarized-hl . 0)(,green-lc . 20)(,cyan-lc . 30)(,blue-lc . 50)
+         (,yellow-lc . 60)(,orange-lc . 70)(,magenta-lc . 85)(,solarized-hl . 100)))
+
+     `(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))
+
+    ;; call chained theme function
+    (when childtheme (funcall childtheme))))
+
+;;;###autoload
+(when (and (boundp 'custom-theme-load-path) load-file-name)
+  (add-to-list 'custom-theme-load-path
+               (file-name-as-directory (file-name-directory load-file-name))))
+
+;; Local Variables:
+;; no-byte-compile: t
+;; End:
+
+(provide 'solarized)
+
+;;; solarized.el ends here
index 68216c6..50fa4ed 100644 (file)
@@ -5,6 +5,7 @@
 ;; Author: John Wiegley <jwiegley@gmail.com>
 ;; Created: 17 Jun 2012
 ;; Version: 1.0
+;; Package-Requires: ((bind-key "1.0") (diminish "0.44"))
 ;; Keywords: dotemacs startup speed config package
 ;; X-URL: https://github.com/jwiegley/use-package
 
 ;; if you have that installed.  It's purpose is to remove strings from your
 ;; mode-line that would otherwise always be there and provide no useful
 ;; information.  It is invoked with the `:diminish' keyword, which is passed
-;; either the minor mode symbol, or a cons of the symbol and a replacement string:
+;; either the minor mode symbol, a cons of the symbol and a replacement string,
+;; or just a replacement string in which case the minor mode symbol is guessed
+;; to be the package name with "-mode" at the end:
 ;;
 ;;   (use-package abbrev
 ;;     :diminish abbrev-mode
 (eval-when-compile
   (require 'cl))
 
+(declare-function package-installed-p 'package)
+(declare-function el-get-read-recipe 'el-get)
+
 (defgroup use-package nil
-  "A use-package declaration for simplifying your .emacs"
+  "A use-package declaration for simplifying your `.emacs'."
   :group 'startup)
 
 (defcustom use-package-verbose t
   :group 'use-package)
 
 (defcustom use-package-debug nil
-  "Whether to report more information, mostly regarding el-get"
+  "Whether to report more information, mostly regarding el-get."
   :type 'boolean
   :group 'use-package)
 
 (defcustom use-package-minimum-reported-time 0.01
   "Minimal load time that will be reported"
   :type 'number
-  :group 'use-package
-  )
+  :group 'use-package)
 
 (defmacro with-elapsed-timer (text &rest forms)
   `(let ((now ,(if use-package-verbose
 (defvar use-package-idle-forms nil)
 
 (defun use-package-start-idle-timer ()
-  "Ensure that the idle timer is running"
+  "Ensure that the idle timer is running."
   (unless use-package-idle-timer
     (setq use-package-idle-timer
           (run-with-idle-timer
            'use-package-idle-eval))))
 
 (defun use-package-init-on-idle (form)
-  "Add a new form to the idle queue"
+  "Add a new form to the idle queue."
   (use-package-start-idle-timer)
   (if use-package-idle-forms
       (add-to-list 'use-package-idle-forms
                    form t)
-    (setq use-package-idle-forms (list form))
-    ))
+    (setq use-package-idle-forms (list form))))
 
 (defun use-package-idle-eval()
-  "Start to eval idle-commands from the idle queue"
+  "Start to eval idle-commands from the idle queue."
   (let ((next (pop use-package-idle-forms)))
     (if next
         (progn
              (message
               "Failure on use-package idle. Form: %s, Error: %s"
               next e)))
-         ;; recurse after a bit
+          ;; recurse after a bit
           (when (sit-for 3)
-           (use-package-idle-eval)))
+            (use-package-idle-eval)))
       ;; finished (so far!)
       (cancel-timer use-package-idle-timer)
       (setq use-package-idle-timer nil))))
@@ -407,8 +411,7 @@ For full documentation. please see commentary.
 :defines Define vars to silence byte-compiler.
 :load-path Add to `load-path' before loading.
 :diminish Support for diminish package (if it's installed).
-:idle adds a form to run on an idle timer
-"
+:idle adds a form to run on an idle timer"
   (let* ((commands (plist-get args :commands))
          (pre-init-body (plist-get args :pre-init))
          (init-body (plist-get args :init))
@@ -445,6 +448,7 @@ For full documentation. please see commentary.
                   ensure)))
 
         (when package-name
+          (require 'package)
           (use-package-ensure-elpa package-name)))
 
 
@@ -453,16 +457,20 @@ For full documentation. please see commentary.
                 `(progn
                    ,config-body
                    (ignore-errors
-                     ,@(if (listp diminish-var)
-                           (if (listp (cdr diminish-var))
-                               (mapcar (lambda (var)
-                                           (if (listp var)
-                                               `(diminish (quote ,(car var)) ,(cdr var))
-                                               `(diminish (quote ,var))))
-                                diminish-var)
-                               `((diminish (quote ,(car diminish-var)) ,(cdr diminish-var)))
-                           )
-                         `((diminish (quote ,diminish-var))))))))
+                     ,@(cond
+                        ((stringp diminish-var)
+                         `((diminish (quote ,(intern (concat name-string "-mode")))
+                                     ,diminish-var)))
+                        ((symbolp diminish-var)
+                         `((diminish (quote ,diminish-var))))
+                        ((and (consp diminish-var) (stringp (cdr diminish-var)))
+                         `((diminish (quote ,(car diminish-var)) ,(cdr diminish-var))))
+                        (t ; list of symbols or (symbol . "string") pairs
+                         (mapcar (lambda (var)
+                                   (if (listp var)
+                                       `(diminish (quote ,(car var)) ,(cdr var))
+                                     `(diminish (quote ,var))))
+                                 diminish-var)))))))
 
       (if (and commands (symbolp commands))
           (setq commands (list commands)))
@@ -475,35 +483,38 @@ For full documentation. please see commentary.
                    ,init-body)))
 
 
-      (flet ((init-for-commands
-              (func sym-or-list)
-              (let ((cons-list (if (and (consp sym-or-list)
-                                        (stringp (car sym-or-list)))
-                                   (list sym-or-list)
-                                 sym-or-list)))
-                (if cons-list
-                    (setq init-body
-                          `(progn
-                             ,init-body
-                             ,@(mapcar #'(lambda (elem)
-                                           (push (cdr elem) commands)
-                                           (funcall func elem))
-                                       cons-list)))))))
-
-        (init-for-commands #'(lambda (binding)
-                               `(bind-key ,(car binding)
-                                          (quote ,(cdr binding))))
-                           (plist-get args :bind))
-
-        (init-for-commands #'(lambda (mode)
-                               `(add-to-list 'auto-mode-alist
-                                             (quote ,mode)))
-                           (plist-get args :mode))
-
-        (init-for-commands #'(lambda (interpreter)
-                               `(add-to-list 'interpreter-mode-alist
-                                             (quote ,interpreter)))
-                           (plist-get args :interpreter)))
+      (let ((init-for-commands
+             (lambda (func sym-or-list)
+               (let ((cons-list (if (and (consp sym-or-list)
+                                         (stringp (car sym-or-list)))
+                                    (list sym-or-list)
+                                  sym-or-list)))
+                 (if cons-list
+                     (setq init-body
+                           `(progn
+                              ,init-body
+                              ,@(mapcar #'(lambda (elem)
+                                            (push (cdr elem) commands)
+                                            (funcall func elem))
+                                        cons-list))))))))
+
+        (funcall init-for-commands
+                 #'(lambda (binding)
+                     `(bind-key ,(car binding)
+                                (quote ,(cdr binding))))
+                 (plist-get args :bind))
+
+        (funcall init-for-commands
+                 #'(lambda (mode)
+                     `(add-to-list 'auto-mode-alist
+                                   (quote ,mode)))
+                 (plist-get args :mode))
+
+        (funcall init-for-commands
+                 #'(lambda (interpreter)
+                     `(add-to-list 'interpreter-mode-alist
+                                   (quote ,interpreter)))
+                 (plist-get args :interpreter)))
 
       `(progn
          ,@(mapcar
@@ -597,6 +608,15 @@ For full documentation. please see commentary.
 
 (put 'use-package 'lisp-indent-function 1)
 
-(provide 'use-package)
+(defconst use-package-font-lock-keywords
+  '(("(\\(use-package\\)\\> *\\(\\sw+\\)?"
+     (1 font-lock-keyword-face)
+     (2 font-lock-constant-face))))
 
+(font-lock-add-keywords 'emacs-lisp-mode use-package-font-lock-keywords)
+
+(provide 'use-package)
+;; Local Variables:
+;; indent-tabs-mode: nil
+;; End:
 ;;; use-package.el ends here
index aaf0946..f6cb751 100644 (file)
@@ -1,11 +1,14 @@
 #+AUTHOR:    Joerg Jaspert
 #+EMAIL:     joerg@ganneff.de
 #+LANGUAGE:  en, de
-#+TEXT:      
-#+OPTIONS: H:3 num:t toc:t \n:nil @:t ::t |:t ^:t -:t f:t todo:nil tasks:nil pri:nil *:t TeX:t LaTeX:nil skip:t d:nil tags:not-in-toc.
+#+OPTIONS:   H:3 num:t toc:t \n:nil @:t ::t |:t ^:t -:t f:t 
+#+OPTIONS:   todo:nil tasks:nil pri:nil *:t TeX:t LaTeX:nil skip:t d:nil tags:not-in-toc.
+#+OPTIONS:   author:t creator:t timestamp:t email:t
 #+INFOJS_OPT: view:info toc:nil ltoc:above mouse:underline buttons:nil
 #+INFOJS_OPT: path:../org-info.js
 #+INFOJS_OPT: home:http://ganneff.de/emacs/
 #+LINK_UP:
 #+LINK_HOME:
 #+STYLE:    <link rel="stylesheet" type="text/css" href="../stylesheet.css" />
+#+EXPORT_SELECT_TAGS: export
+#+EXPORT_EXCLUDE_TAGS: noexport
index 3af1400..0717253 100644 (file)
 (defvar jj-dir (file-name-directory (or load-file-name (buffer-file-name)))
   "The master directory for Ganneffs emacs configuration and storage.
 Usually ~/.emacs.d/")
-(defvar jj-config-dir (expand-file-name "config" jj-dir)
+(defvar jj-config-dir
+  (expand-file-name "config" jj-dir)
   "Ganneffs main emacs configuration can be found here.")
-(defvar jj-emacs-config (expand-file-name "emacs.org" jj-config-dir)
+(defvar jj-emacs-config
+  (expand-file-name "emacs.org" jj-config-dir)
   "Ganneffs main emacs configuration file.")
-(defvar jj-sys-config (expand-file-name (concat system-name ".org") jj-config-dir)
-  "Ganneffs System/Host specific emacs configiraton file")
-(defvar jj-os-config (expand-file-name (concat (jj-system-type) ".org") jj-config-dir)
-  "Ganneffs Operating system specific emacs configuration file")
-(defvar jj-user-config (expand-file-name (concat user-login-name ".org") jj-config-dir) 
-  "Ganneffs username specific emacs configuration file")
-(defvar jj-elisp-dir (expand-file-name "elisp" jj-dir)
-  "This directory stores subdirs for packages locally put into Ganneffs emacs config")
-(defvar jj-elisp-local-dir (expand-file-name "local" jj-elisp-dir)
-  "This directory stores extra elisp files for Ganneffs emacs config")
-(defvar jj-custom-file (expand-file-name "customized.el" jj-config-dir)
-  "Where do changes from the customization interface end in Ganneffs emacs config")
-(defvar jj-cache-dir (expand-file-name "cache" jj-dir)
-  "This directory stores cache files and other volatile data")
-(defvar jj-backup-directory (expand-file-name (concat "emacs-autosave-" user-login-name) jj-cache-dir)
-  "This directory stores backup files")
+(defvar jj-elisp-dir
+  (expand-file-name "elisp" jj-dir)
+  "This directory stores subdirs for local packages in Ganneffs emacs config.")
+(defvar jj-elisp-local-dir
+  (expand-file-name "local" jj-elisp-dir)
+  "This directory stores extra elisp files for Ganneffs emacs config.")
+(defvar jj-custom-file
+  (expand-file-name "customized.el" jj-config-dir)
+  "Changes from the customization interface in Ganneffs emacs config.")
+(defvar jj-cache-dir
+  (expand-file-name "cache" jj-dir)
+  "This directory stores cache files and other volatile data.")
+(defvar jj-backup-directory
+  (expand-file-name (concat "emacs-autosave-" user-login-name) jj-cache-dir)
+  "This directory stores backup files.")
+(defvar jj-theme-dir
+  (expand-file-name "themes" jj-dir)
+  "This directory stores theme files for Ganneffs emacs config")
+
+(defvar jj-sys-config
+  (expand-file-name (concat system-name ".org") jj-config-dir)
+  "Ganneffs System/Host specific emacs configiraton file.")
+(defvar jj-os-config
+  (expand-file-name (concat (jj-system-type) ".org") jj-config-dir)
+  "Ganneffs Operating system specific emacs configuration file.")
+(defvar jj-user-config
+  (expand-file-name (concat user-login-name ".org") jj-config-dir) 
+  "Ganneffs username specific emacs configuration file.")
+(defvar jj-ev-config (expand-file-name
+                      (concat "emacs"
+                              (number-to-string emacs-major-version) ".org")
+                      jj-config-dir)
+  "Ganneffs emacs version specific configuration file.")
 
 ;; Ensure that the cache directory hierarchy exists
 (if (not (file-exists-p jj-cache-dir))
@@ -84,21 +103,34 @@ Usually ~/.emacs.d/")
 
 ;; Now read my config
 ;; Note that those files *can* include further files.
+(defun jj-compile-and-load (&optional arg)
+  "Use org-tangle to get the emacs-lisp parts from .org emacs
+config files into .el ones, byte-compile those and then load
+them."
+  (let ((el-file (concat (file-name-sans-extension arg) ".el")))
+    (cond
+     ((file-newer-than-file-p arg el-file)
+      (message "File %s newer than %s, recompiling, please wait" arg el-file)
+      (org-babel-tangle-file arg el-file "emacs-lisp")
+      (byte-compile-file el-file)
+      ))
+    (load-file el-file)
+    ))
 
 ;; The basic config is always loaded, no matter where we start emacs.
-(org-babel-load-file jj-emacs-config)
+(jj-compile-and-load jj-emacs-config)
+;(org-babel-load-file jj-emacs-config)
 
 ;; All the others are optional. We try the order of os, system, user
 ;; specific files and load them, should they be there
 (if (file-exists-p jj-os-config) (org-babel-load-file jj-os-config ))
-(if (file-exists-p jj-sys-config) (org-babel-load-file jj-sys-config))
+;(if (file-exists-p jj-sys-config) (org-babel-load-file jj-sys-config))
+(if (file-exists-p jj-sys-config) (jj-compile-and-load jj-sys-config))
 (if (file-exists-p jj-user-config) (org-babel-load-file jj-user-config))
+(if (file-exists-p jj-ev-config) (org-babel-load-file jj-emacs-version-config))
 
 ;; Lets get a message about startup time out
 (when (require 'time-date nil t)
   (message "Emacs startup time: %d seconds."
            (time-to-seconds (time-since emacs-load-start-time)))
   )
-; (message (concat "Emacs startup time: " (emacs-init-time)))
-
-
diff --git a/.emacs.d/themes/solarized-dark-theme.el b/.emacs.d/themes/solarized-dark-theme.el
new file mode 100644 (file)
index 0000000..548b48e
--- /dev/null
@@ -0,0 +1,7 @@
+(require 'solarized)
+
+(deftheme solarized-dark "The dark variant of the Solarized colour theme")
+
+(create-solarized-theme 'dark 'solarized-dark)
+
+(provide-theme 'solarized-dark)
diff --git a/.emacs.d/themes/solarized-light-theme.el b/.emacs.d/themes/solarized-light-theme.el
new file mode 100644 (file)
index 0000000..15802c9
--- /dev/null
@@ -0,0 +1,7 @@
+(require 'solarized)
+
+(deftheme solarized-light "The light variant of the Solarized colour theme")
+
+(create-solarized-theme 'light 'solarized-light)
+
+(provide-theme 'solarized-light)