Added solarized color theme.
authorLuke Hoersten <Luke@Hoersten.org>
Mon, 13 Feb 2012 12:46:18 -0600
changeset 47 3415a60d5fd0
parent 46 2c6b198426df
child 48 f17ebf233431
Added solarized color theme.
init.el
thirdparty/color-theme-solarized/LICENSE
thirdparty/color-theme-solarized/README.md
thirdparty/color-theme-solarized/color-theme-solarized-pkg.el
thirdparty/color-theme-solarized/color-theme-solarized.el
thirdparty/color-theme-solarized/makepkg.sh
thirdparty/color-theme-solarized/solarized-dark-theme.el
thirdparty/color-theme-solarized/solarized-definitions.el
thirdparty/color-theme-solarized/solarized-light-theme.el
--- a/init.el	Sun Dec 04 12:49:31 2011 -0600
+++ b/init.el	Mon Feb 13 12:46:18 2012 -0600
@@ -55,9 +55,9 @@
 
       (tool-bar-mode -1)      ; remove tool bar
       (scroll-bar-mode -1)    ; remove scroll bar
+      (menu-bar-mode -1)      ; remove menu bar
       (visual-line-mode t)    ; word wrap break on whitespace
-      (set-frame-font (get-font)))
-  (menu-bar-mode -1))
+      (set-frame-font (get-font))))
 
 ;;; terminal
 (global-set-key (kbd "C-c s") 'eshell) ; start shell
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/color-theme-solarized/LICENSE	Mon Feb 13 12:46:18 2012 -0600
@@ -0,0 +1,20 @@
+Copyright (c) 2011 Ethan Schoonover
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/color-theme-solarized/README.md	Mon Feb 13 12:46:18 2012 -0600
@@ -0,0 +1,163 @@
+Solarized Colorscheme for Emacs
+===============================
+
+Stolen from Ethan Schoonover <[email protected]> by Greg Pfeil <[email protected]>
+
+Visit the [Solarized homepage]
+------------------------------
+
+See the [Solarized homepage] for screenshots, 
+details and colorscheme versions for Vim, Mutt, popular terminal emulators and 
+other applications.
+
+Screenshots
+-----------
+
+![solarized dark](https://github.com/altercation/solarized/raw/master/img/solarized-vim.png)
+
+Downloads
+---------
+
+If you have come across this colorscheme via the [Emacs-only repository] on 
+github, see the link above to the Solarized homepage or visit the main [Solarized repository].
+
+The [Emacs-only repository] is kept in sync with the main [Solarized repository]. Issues, bug reports, changelogs that are not specific to the Emacs implementation should be submitted to the main [Solarized repository].
+
+[Solarized homepage]:    http://ethanschoonover.com/solarized
+[Solarized repository]:  https://github.com/altercation/solarized
+[Emacs-only repository]:  https://github.com/sellout/emacs-color-theme-solarized
+[color-theme]: http://www.nongnu.org/color-theme
+
+Installation & Usage
+--------------------
+
+### Emacs 24
+
+1. Add the `emacs-color-theme-solarized` directory to your Emacs `custom-theme-load-path`.
+2. Add `(load-theme solarized-[light|dark] t)` to your Emacs init file.
+3. Reload the init file, or restart Emacs.
+
+### [color-theme] \(pre-Emacs 24\)
+
+1. Download and install [color-theme].
+2. Add the `emacs-color-theme-solarized` directory to your Emacs `load-path`.
+3. Add `(require 'color-theme-solarized)` to your Emacs init file (usually `~/.emacs`).
+3. Reload the init file, or restart Emacs.
+4. Use the usual [color-theme] mechanism to select one of the Solarized themes, or `M-x color-theme-solarized-[light|dark]`.
+
+### IMPORTANT NOTE FOR TERMINAL USERS:
+
+If you are going to use Solarized in Terminal mode (i.e. not in a GUI version
+like Cocoa or X11 Emacs), **please please please** consider setting your
+terminal emulator's colorscheme to use the Solarized palette. The [Solarized
+repository] includes palettes for some popular terminal emulator as well as
+Xdefaults; or you can download them from the official [Solarized homepage].
+If you use this emacs color theme *without* having changed your emulator's
+palette, you will need to configure Solarized to degrade its colorscheme to
+a set compatible with the terminal's default limited 256 color palette
+(whereas by using the terminal's 16 ANSI color values, you would
+see the correct, specific values for the Solarized palette).
+
+If you do use the custom terminal colors, i.e. the 16 overridden ANSI color
+values, the emacs colorscheme should work out of the box for you. If you are
+using a terminal emulator that supports 256 colors and don't want to use
+the custom Solarized terminal colors, you will need to use the degraded 256
+colorscheme. To do so, simply customize the `solarized-termcolor` variable to
+`256`.
+
+Again, I recommend just changing your terminal colors to Solarized values 
+either manually or via one of the many terminal schemes available for import.
+
+Advanced Configuration
+----------------------
+
+Solarized will work out of the box with just the instructions specified above
+but does include several variables that can be customized.
+
+    variable name            default   optional
+    --------------------------------------------
+    solarized-termcolors =   16    |   256
+    solarized-degrade    =   nil   |   t
+    solarized-bold       =   t     |   nil
+    solarized-underline  =   t     |   nil
+    solarized-italic     =   t     |   nil
+    solarized-contrast   =   normal|   high, low
+    solarized-visibility =   normal|   high, low
+    solarized-broken-srgb=   nil   |   t (see details for Mac behavior)
+    --------------------------------------------
+
+### Option Details
+
+*   solarized-termcolors
+
+    This is set to *16* by default, meaning that Solarized will attempt to use 
+    the standard 16 colors of your terminal emulator, assuming that you've set
+    these colors to the correct Solarized values either manually or by 
+    importing one of the many colorscheme available for popular terminal 
+    emulators and Xdefaults.
+    If you don't want to use the Solarized colors via the terminal
+    emulator's palette, you can set this to *256*, which will use a degraded
+    version of the Solarized palette by displaying the closest colors in
+    the terminal's default 256 colors as shown in [Xterm's color
+    chart](http://en.wikipedia.org/wiki/File:Xterm_color_chart.png).
+
+*   solarized-degrade
+
+    For test purposes only; in GUI mode, this forces Solarized to use the 256
+    degraded color mode to test the approximate color values for accuracy.
+
+*   solarized-bold | solarized-underline | solarized-italic
+
+    If you wish to stop Solarized from displaying bold, underlined or 
+    italicized typefaces, simply set the appropriate variable to `nil`.
+
+*   solarized-contrast
+
+    Stick with normal! It's been carefully tested. Setting this option to high 
+    or low does use the same Solarized palette but simply shifts some values
+    up or down in order to expand or compress the tonal range displayed.
+
+*   solarized-visibility
+
+    Special characters such as trailing whitespace, tabs, newlines, when
+    displayed using `:set list` can be set to one of three levels depending on 
+    your needs. Default value is `normal` with `high` and `low` options.
+    
+*   solarized-broken-srgb
+
+    Emacs [bug #8402](http://debbugs.gnu.org/cgi/bugreport.cgi?bug=8402)
+    results in incorrect color handling on Macs. If this is `t` (the default
+    on Macs), Solarized works around it with alternative colors. However,
+    these colors are not totally portable, so you may be able to edit the
+    "Gen RGB" column in `solarized-definitions.el` to improve them further.
+
+Code Notes
+----------
+
+I have attempted to modularize the creation of Emacs colorschemes in this script and, while it could be refactored further, it should be a good foundation for the creation of any color scheme. By simply changing the  values in the `solarized-colors` table in `solarized-definitions.el` and testing in a GUI Emacs, you can rapidly prototype new colorschemes without diving into the weeds of line-item editing each syntax highlight declaration.
+
+The Values
+----------
+
+L\*a\*b values are canonical (White D65, Reference D50), other values are 
+matched in sRGB space.
+
+    SOLARIZED HEX     16/8 TERMCOL  XTERM/HEX   L*A*B      RGB         HSB
+    --------- ------- ---- -------  ----------- ---------- ----------- -----------
+    base03    #002b36  8/4 brblack  234 #1c1c1c 15 -12 -12   0  43  54 193 100  21
+    base02    #073642  0/4 black    235 #262626 20 -12 -12   7  54  66 192  90  26
+    base01    #586e75 10/7 brgreen  240 #585858 45 -07 -07  88 110 117 194  25  46
+    base00    #657b83 11/7 bryellow 241 #626262 50 -07 -07 101 123 131 195  23  51
+    base0     #839496 12/6 brblue   244 #808080 60 -06 -03 131 148 150 186  13  59
+    base1     #93a1a1 14/4 brcyan   245 #8a8a8a 65 -05 -02 147 161 161 180   9  63
+    base2     #eee8d5  7/7 white    254 #e4e4e4 92 -00  10 238 232 213  44  11  93
+    base3     #fdf6e3 15/7 brwhite  230 #ffffd7 97  00  10 253 246 227  44  10  99
+    yellow    #b58900  3/3 yellow   136 #af8700 60  10  65 181 137   0  45 100  71
+    orange    #cb4b16  9/3 brred    166 #d75f00 50  50  55 203  75  22  18  89  80
+    red       #dc322f  1/1 red      160 #d70000 50  65  45 220  50  47   1  79  86
+    magenta   #d33682  5/5 magenta  125 #af005f 50  65 -05 211  54 130 331  74  83
+    violet    #6c71c4 13/5 brmagenta 61 #5f5faf 50  15 -45 108 113 196 237  45  77
+    blue      #268bd2  4/4 blue      33 #0087ff 55 -10 -45  38 139 210 205  82  82
+    cyan      #2aa198  6/6 cyan      37 #00afaf 60 -35 -05  42 161 152 175  74  63
+    green     #859900  2/2 green     64 #5f8700 60 -20  65 133 153   0  68 100  60
+    
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/color-theme-solarized/color-theme-solarized-pkg.el	Mon Feb 13 12:46:18 2012 -0600
@@ -0,0 +1,1 @@
+(define-package "color-theme-solarized" "%%version%%" "Solarized themes for Emacs" '((color-theme "6.6.1")))
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/color-theme-solarized/color-theme-solarized.el	Mon Feb 13 12:46:18 2012 -0600
@@ -0,0 +1,56 @@
+;;; Author: Ethan Schoonover, Solarized; Greg Pfeil, Emacs adaptation
+;;; URL: http://ethanschoonover.com/solarized
+
+;;; This file is not (YET) part of GNU Emacs.
+
+;;; # Usage
+
+;;; 1. Install the color-theme package
+;;;   (http://www.emacswiki.org/cgi-bin/wiki/ColorTheme)
+;;; 2. Load this file
+;;; 3. M-x color-theme-solarized-[dark|light]
+
+(require 'solarized-definitions
+         (let* ((reqname (concat (file-name-directory (or load-file-name
+                                                          buffer-file-name))
+                                 "solarized-definitions.el"))
+                (compreqname (concat reqname "c")))
+           (if (file-exists-p compreqname) compreqname reqname)))
+
+(eval-when-compile
+  (require 'color-theme))
+
+;;;###autoload
+(defun color-theme-solarized (mode)
+  "Color theme by Ethan Schoonover, created 2011-03-24.
+Ported to Emacs by Greg Pfeil, http://ethanschoonover.com/solarized."
+  (interactive "Slight or dark? ")
+  (color-theme-install
+   (let* ((definitions (solarized-color-definitions mode))
+          (faces (first definitions))
+          (variables (second definitions)))
+       (solarized-color-definitions mode)
+     `(,(intern (concat "color-theme-solarized-" (symbol-name mode)))
+       ,variables
+       ,@faces))))
+
+;;;###autoload
+(defun color-theme-solarized-dark ()
+  (interactive)
+  (color-theme-solarized 'dark))
+
+;;;###autoload
+(defun color-theme-solarized-light ()
+  (interactive)
+  (color-theme-solarized 'light))
+
+(add-to-list 'color-themes
+             `(color-theme-solarized-light
+               "Solarized Light"
+               ,solarized-description))
+(add-to-list 'color-themes
+             `(color-theme-solarized-dark
+               "Solarized Dark"
+               ,solarized-description))
+
+(provide 'color-theme-solarized)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/color-theme-solarized/makepkg.sh	Mon Feb 13 12:46:18 2012 -0600
@@ -0,0 +1,17 @@
+#!/usr/bin/env bash
+
+version=$1
+
+if [ "$version" = "" ]; then
+    version=$(date -u '+%Y%m%d')
+fi
+echo "version = $version"
+
+dir="color-theme-solarized-${version}"
+
+mkdir $dir
+
+cp *.el $dir
+sed -i "s/%%version%%/$version/" "$dir/color-theme-solarized-pkg.el"
+
+tar cf color-theme-solarized-${version}.tar $dir
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/color-theme-solarized/solarized-dark-theme.el	Mon Feb 13 12:46:18 2012 -0600
@@ -0,0 +1,5 @@
+(require 'solarized-definitions
+         (locate-file "solarized-definitions.el" custom-theme-load-path
+                      '("c" "")))
+
+(create-solarized-theme dark)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/color-theme-solarized/solarized-definitions.el	Mon Feb 13 12:46:18 2012 -0600
@@ -0,0 +1,344 @@
+(eval-when-compile
+  (require 'cl))
+
+(defconst solarized-description
+  "Color theme by Ethan Schoonover, created 2011-03-24.
+Ported to Emacs by Greg Pfeil, http://ethanschoonover.com/solarized.")
+
+(defcustom solarized-degrade nil
+  "For test purposes only; when in GUI mode, forces Solarized to use the 256
+degraded color mode to test the approximate color values for accuracy."
+  :type 'boolean
+  :group 'solarized)
+
+(defcustom solarized-bold t
+  "Stops Solarized from displaying bold when nil."
+  :type 'boolean
+  :group 'solarized)
+
+(defcustom solarized-underline t
+  "Stops Solarized from displaying underlines when nil."
+  :type 'boolean
+  :group 'solarized)
+
+(defcustom solarized-italic t
+  "Stops Solarized from displaying italics when nil."
+  :type 'boolean
+  :group 'solarized)
+
+(defcustom solarized-termcolors 16
+  "This setting applies to emacs in terminal (non-GUI) mode.
+If set to 16, emacs will use the terminal emulator's colorscheme (best option as
+long as you've set your emulator's colors to the Solarized palette). If set to
+256 and your terminal is capable of displaying 256 colors, emacs will use the
+256 degraded color mode."
+  :type 'integer
+  :options '(16 256)
+  :group 'solarized)
+
+(defcustom solarized-contrast 'normal
+  "Stick with normal! It's been carefully tested. Setting this option to high or
+low does use the same Solarized palette but simply shifts some values up or down
+in order to expand or compress the tonal range displayed."
+  :type 'symbol
+  :options '(high normal low)
+  :group 'solarized)
+
+(defcustom solarized-broken-srgb (if (eq system-type 'darwin) t nil)
+  "Emacs bug #8402 results in incorrect color handling on Macs. If this is t
+(the default on Macs), Solarized works around it with alternative colors.
+However, these colors are not totally portable, so you may be able to edit the
+\"Gen RGB\" column in solarized-definitions.el to improve them further."
+  :type 'boolean
+  :group 'solarized)
+
+;; FIXME: The Generic RGB colors will actually vary from device to device, but
+;;        hopefully these are closer to the intended colors than the sRGB values
+;;        that Emacs seems to dislike
+(defvar solarized-colors
+  ;; name    sRGB      Gen RGB   degraded  ANSI(Solarized terminal)
+  '((base03  "#002b36" "#042028" "#1c1c1c" "#7f7f7f")
+    (base02  "#073642" "#0a2832" "#262626" "#000000")
+    (base01  "#586e75" "#465a61" "#4e4e4e" "#00ff00")
+    (base00  "#657b83" "#52676f" "#585858" "#ffff00")
+    (base0   "#839496" "#708183" "#808080" "#5c5cff")
+    (base1   "#93a1a1" "#81908f" "#8a8a8a" "#00ffff")
+    (base2   "#eee8d5" "#e9e2cb" "#d7d7af" "#e5e5e5")
+    (base3   "#fdf6e3" "#fcf4dc" "#ffffd7" "#ffffff")
+    (yellow  "#b58900" "#a57705" "#af8700" "#cdcd00")
+    (orange  "#cb4b16" "#bd3612" "#d75f00" "#ff0000")
+    (red     "#dc322f" "#c60007" "#af0000" "#cd0000")
+    (magenta "#d33682" "#c61b6e" "#af005f" "#cd00cd")
+    (violet  "#6c71c4" "#5859b7" "#5f5faf" "#ff00ff")
+    (blue    "#268bd2" "#2075c7" "#0087ff" "#0000ee")
+    (cyan    "#2aa198" "#259185" "#00afaf" "#00cdcd")
+    (green   "#859900" "#728a05" "#5f8700" "#00cd00"))
+  "This is a table of all the colors used by the Solarized color theme. Each
+   column is a different set, one of which will be chosen based on term
+   capabilities, etc.")
+
+(defun solarized-color-definitions (mode)
+  (flet ((find-color (name)
+           (let ((index (if window-system
+                            (if solarized-degrade
+                                3
+			      (if solarized-broken-srgb 2 1))
+			  (if (= solarized-termcolors 256)
+			      3
+			    4))))
+             (nth index (assoc name solarized-colors)))))
+    (let ((base03    (find-color 'base03))
+          (base02    (find-color 'base02))
+          (base01    (find-color 'base01))
+          (base00    (find-color 'base00))
+          (base0     (find-color 'base0))
+          (base1     (find-color 'base1))
+          (base2     (find-color 'base2))
+          (base3     (find-color 'base3))
+          (yellow    (find-color 'yellow))
+          (orange    (find-color 'orange))
+          (red       (find-color 'red))
+          (magenta   (find-color 'magenta))
+          (violet    (find-color 'violet))
+          (blue      (find-color 'blue))
+          (cyan      (find-color 'cyan))
+          (green     (find-color 'green))
+          (bold      (if solarized-bold 'bold 'normal))
+          (underline (if solarized-underline t nil))
+          (opt-under nil)
+          (italic    (if solarized-italic 'italic 'normal)))
+      (when (eq 'light mode)
+        (rotatef base03 base3)
+        (rotatef base02 base2)
+        (rotatef base01 base1)
+        (rotatef base00 base0))
+      (let ((back base03))
+        (cond ((eq 'high solarized-contrast)
+               (let ((orig-base3 base3))
+                 (rotatef base01 base00 base0 base1 base2 base3)
+                 (setf base3 orig-base3)))
+              ((eq 'low solarized-contrast)
+               (setf back      base02
+                     opt-under t)))
+        `((;; basic
+           (default ((t (:foreground ,base0 ,:background ,back))))
+           (cursor
+            ((t (:foreground ,base0 :background ,base03 :inverse-video t))))
+           (escape-glyph-face ((t (:foreground ,red))))
+           (fringe ((t (:foreground ,base01 :background ,base02))))
+           (linum ((t (:foreground ,base01 :background ,base02))))
+           (header-line ((t (:foreground ,base0 :background ,base2))))
+           (highlight ((t (:background ,base02))))
+           (hl-line ((t (:background ,base02))))
+           (isearch ((t (:foreground ,yellow :inverse-video t))))
+           (lazy-highlight ((t (:background ,base2 :foreground ,base00))))
+           (link ((t (:foreground ,violet :underline ,underline))))
+           (link-visited ((t (:foreground ,magenta :underline ,underline))))
+           (menu ((t (:foreground ,base0 :background ,base02))))
+           (minibuffer-prompt ((t (:foreground ,blue))))
+           (mode-line
+            ((t (:foreground ,base1 :background ,base02
+                             :box (:line-width 1 :color ,base1)))))
+           (mode-line-buffer-id ((t (:foreground ,base1))))
+           (mode-line-inactive
+            ((t (:foreground ,base0  :background ,base02
+                             :box (:line-width 1 :color ,base02)))))
+           (region ((t (:background ,base02))))
+           (secondary-selection ((t (:background ,base02))))
+           (trailing-whitespace ((t (:foreground ,red :inverse-video t))))
+           (vertical-border ((t (:foreground ,base0))))
+           ;; comint
+           (comint-highlight-prompt ((t (:foreground ,blue))))
+           ;; compilation
+           (compilation-info ((t (:foreground ,green :weight ,bold))))
+           (compilation-warning ((t (:foreground ,orange :weight ,bold))))
+           ;; customize
+           (custom-button
+            ((t (:background ,base02
+                             :box (:line-width 2 :style released-button)))))
+           (custom-button-mouse
+            ((t (:inherit custom-button :foreground ,base1))))
+           (custom-button-pressed
+            ((t (:inherit custom-button-mouse
+                          :box (:line-width 2 :style pressed-button)))))
+           (custom-comment-tag ((t (:background ,base02))))
+           (custom-comment-tag ((t (:background ,base02))))
+           (custom-documentation ((t (:inherit default))))
+           (custom-group-tag ((t (:foreground ,orange :weight ,bold))))
+           (custom-link ((t (:foreground ,violet))))
+           (custom-state ((t (:foreground ,green))))
+           (custom-variable-tag ((t (:foreground ,orange :weight ,bold))))
+           ;; diff
+           (diff-added ((t (:foreground ,green :inverse-video t))))
+           (diff-changed ((t (:foreground ,yellow :inverse-video t))))
+           (diff-removed ((t (:foreground ,red :inverse-video t))))
+           (diff-header ((t (:background ,base01))))
+           (diff-file-header
+            ((t (:background ,base1 :foreground ,base01 :weight ,bold))))
+           (diff-refine-change ((t (:background ,base1))))
+           ;; IDO
+           (ido-only-match ((t (:foreground ,green))))
+           (ido-subdir ((t (:foreground ,blue))))
+           (ido-first-match ((t (:foreground ,green :weight ,bold))))
+           ;; emacs-wiki
+           (emacs-wiki-bad-link-face
+            ((t (:foreground ,red :underline ,underline))))
+           (emacs-wiki-link-face
+            ((t (:foreground ,blue :underline ,underline))))
+           (emacs-wiki-verbatim-face
+            ((t (:foreground ,base00 :underline ,underline))))
+           ;; eshell
+           (eshell-prompt ((t (:foreground ,green :weight ,bold))))
+           ;; font-lock
+           (font-lock-builtin-face ((t (:foreground ,green))))
+           (font-lock-comment-face ((t (:foreground ,base01 :slant ,italic))))
+           (font-lock-constant-face ((t (:foreground ,cyan))))
+           (font-lock-function-name-face ((t (:foreground ,blue))))
+           (font-lock-keyword-face ((t (:foreground ,green))))
+           (font-lock-string-face ((t (:foreground ,cyan))))
+           (font-lock-type-face ((t (:foreground ,yellow))))
+           (font-lock-variable-name-face ((t (:foreground ,blue))))
+           (font-lock-warning-face ((t (:foreground ,red :weight ,bold))))
+           (font-lock-doc-face ((t (:foreground ,cyan :slant ,italic))))
+           (font-lock-color-constant-face ((t (:foreground ,green))))
+           (font-lock-comment-delimiter-face
+            ((t (:foreground ,base01 :weight ,bold))))
+           (font-lock-doc-string-face ((t (:foreground ,green))))
+           (font-lock-preprocessor-face ((t (:foreground ,orange))))
+           (font-lock-reference-face ((t (:foreground ,cyan))))
+           (font-lock-negation-char-face ((t (:foreground ,red))))
+           (font-lock-other-type-face ((t (:foreground ,blue :slant ,italic))))
+           (font-lock-regexp-grouping-construct    ((t (:foreground ,orange))))
+           (font-lock-special-keyword-face ((t (:foreground ,magenta))))
+           (font-lock-exit-face ((t (:foreground ,red))))
+           (font-lock-other-emphasized-face
+            ((t (:foreground ,violet :weight ,bold :slant ,italic))))
+           (font-lock-regexp-grouping-backslash ((t (:foreground ,yellow))))
+           ;; info
+           (info-xref ((t (:foreground ,blue :underline ,underline))))
+           (info-xref-visited ((t (:inherit info-xref :foreground ,magenta))))
+           ;; org
+           (org-hide ((t (:foreground ,base03))))
+           (org-todo ((t (:foreground ,base03 :background ,red :weight ,bold))))
+           (org-done ((t (:foreground ,green :weight ,bold))))
+           (org-todo-kwd-face ((t (:foreground ,red :background ,base03))))
+           (org-done-kwd-face ((t (:foreground ,green :background ,base03))))
+           (org-project-kwd-face
+            ((t (:foreground ,violet :background ,base03))))
+           (org-waiting-kwd-face
+            ((t (:foreground ,orange :background ,base03))))
+           (org-someday-kwd-face ((t (:foreground ,blue :background ,base03))))
+           (org-started-kwd-face
+            ((t (:foreground ,yellow :background ,base03))))
+           (org-cancelled-kwd-face
+            ((t (:foreground ,green :background ,base03))))
+           (org-delegated-kwd-face
+            ((t (:foreground ,cyan :background ,base03))))
+           ;; show-paren
+           (show-paren-match-face ((t (:background ,cyan :foreground ,base3))))
+           (show-paren-mismatch-face
+            ((t (:background ,red :foreground ,base3))))
+           ;; widgets
+           (widget-field
+            ((t (:box (:line-width 1 :color ,base00) :inherit default))))
+           (widget-single-line-field ((t (:inherit widget-field))))
+           ;; extra modules
+           ;; -------------
+           ;; gnus
+           (gnus-cite-1 ((t (:foreground ,magenta))))
+           (gnus-cite-2 ((t (:foreground ,base2))))
+           (gnus-cite-3 ((t (:foreground ,base3))))
+           (gnus-cite-4 ((t (:foreground ,base1))))
+           (gnus-cite-5 ((t (:foreground ,magenta))))
+           (gnus-cite-6 ((t (:foreground ,base2))))
+           (gnus-cite-7 ((t (:foreground ,base3))))
+           (gnus-cite-8 ((t (:foreground ,base1))))
+           (gnus-cite-9 ((t (:foreground ,base2))))
+           (gnus-cite-10 ((t (:foreground ,base3))))
+           (gnus-cite-11 ((t (:foreground ,blue))))
+           (gnus-group-mail-1 ((t (:foreground ,base3 :weight ,bold))))
+           (gnus-group-mail-1-empty ((t (:foreground ,base3))))
+           (gnus-group-mail-2 ((t (:foreground ,base2 :weight ,bold))))
+           (gnus-group-mail-2-empty ((t (:foreground ,base2))))
+           (gnus-group-mail-3 ((t (:foreground ,magenta :weight ,bold))))
+           (gnus-group-mail-3-empty ((t (:foreground ,magenta))))
+           (gnus-group-mail-low ((t (:foreground ,base00 :weight ,bold))))
+           (gnus-group-mail-low-empty ((t (:foreground ,base00))))
+           (gnus-group-news-1 ((t (:foreground ,base1 :weight ,bold))))
+           (gnus-group-news-1-empty ((t (:foreground ,base1))))
+           (gnus-group-news-2 ((t (:foreground ,blue :weight ,bold))))
+           (gnus-group-news-2-empty ((t (:foreground ,blue))))
+           (gnus-group-news-low ((t (:foreground ,violet :weight ,bold))))
+           (gnus-group-news-low-empty ((t (:foreground ,violet))))
+           (gnus-header-content ((t (:foreground ,cyan :slant ,italic))))
+           (gnus-header-from ((t (:foreground ,base2))))
+           (gnus-header-name ((t (:foreground ,blue))))
+           (gnus-header-newsgroups ((t (:foreground ,green :slant ,italic))))
+           (gnus-header-subject ((t (:foreground ,base1))))
+           (gnus-server-agent ((t (:foreground ,base3 :weight ,bold))))
+           (gnus-server-closed ((t (:foreground ,base1 :slant ,italic))))
+           (gnus-server-denied ((t (:foreground ,base2 :weight ,bold))))
+           (gnus-server-offline ((t (:foreground ,green :weight ,bold))))
+           (gnus-server-opened ((t (:foreground ,cyan :weight ,bold))))
+           (gnus-splash ((t (:foreground ,base2))))
+           (gnus-summary-high-ancient
+            ((t (:foreground ,magenta :weight ,bold))))
+           (gnus-summary-high-read ((t (:foreground ,base1 :weight ,bold))))
+           (gnus-summary-high-ticked ((t (:foreground ,base3 :weight ,bold))))
+           (gnus-summary-high-undownloaded
+            ((t (:foreground ,base2 :weight ,bold))))
+           (gnus-summary-low-ancient
+            ((t (:foreground ,magenta :slant ,italic))))
+           (gnus-summary-low-read ((t (:foreground ,base1 :slant ,italic))))
+           (gnus-summary-low-ticked ((t (:foreground ,base3 :slant ,italic))))
+           (gnus-summary-low-undownloaded
+            ((t (:foreground ,base2 :slant ,italic))))
+           (gnus-summary-normal-ancient ((t (:foreground ,magenta))))
+           (gnus-summary-normal-read ((t (:foreground ,base1))))
+           (gnus-summary-normal-ticked ((t (:foreground ,base3))))
+           (gnus-summary-normal-undownloaded ((t (:foreground ,base2))))
+           ;; Flymake
+           (flymake-errline ((t (:background ,orange))))
+           (flymake-warnline ((t (:background ,violet))))
+           ;; whitespace
+           (whitespace-empty ((t (:foreground ,red))))
+           (whitespace-hspace ((t (:foreground ,orange))))
+           (whitespace-indentation ((t (:foreground ,base02))))
+           (whitespace-space ((t (:foreground ,base02))))
+           (whitespace-space-after-tab ((t (:foreground ,cyan))))
+           (whitespace-space-before-tab ((t (:foreground ,red :weight ,bold))))
+           (whitespace-tab ((t (:foreground ,base02))))
+           (whitespace-trailing
+            ((t (:background ,base02 :foreground ,red :weight ,bold))))
+           (whitespace-highlight-face
+            ((t (:background ,blue :foreground ,red))))
+           ;; Message
+           (message-mml ((t (:foreground ,blue))))
+           (message-cited-text ((t (:foreground ,base2))))
+           (message-separator ((t (:foreground ,base3))))
+           (message-header-xheader ((t (:foreground ,violet))))
+           (message-header-name ((t (:foreground ,cyan))))
+           (message-header-other ((t (:foreground ,red))))
+           (message-header-newsgroups
+            ((t (:foreground ,yellow :weight ,bold :slant ,italic))))
+           (message-header-subject ((t (:foreground ,base00))))
+           (message-header-cc ((t (:foreground ,green :weight ,bold))))
+           (message-header-to ((t (:foreground ,base1 :weight ,bold)))))
+          ((foreground-color . ,base0)
+           (background-color . ,base03)
+           (background-mode . ,mode)
+           (cursor-color . ,base0)))))))
+
+(defmacro create-solarized-theme (mode)
+  (let* ((theme-name (intern (concat "solarized-" (symbol-name mode))))
+         (defs (solarized-color-definitions mode))
+         (theme-vars (mapcar (lambda (def) (list (car def) (cdr def)))
+                             (second defs)))
+         (theme-faces (first defs)))
+    `(progn
+       (deftheme ,theme-name ,solarized-description)
+       (apply 'custom-theme-set-variables ',theme-name ',theme-vars)
+       (apply 'custom-theme-set-faces ',theme-name ',theme-faces)
+       (provide-theme ',theme-name))))
+
+(provide 'solarized-definitions)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/color-theme-solarized/solarized-light-theme.el	Mon Feb 13 12:46:18 2012 -0600
@@ -0,0 +1,5 @@
+(require 'solarized-definitions
+         (locate-file "solarized-definitions.el" custom-theme-load-path
+                      '("c" "")))
+
+(create-solarized-theme light)