Merge pull request #134 from sellout/unified

Overhaul pretty much everything
This commit is contained in:
Greg Pfeil 2015-01-06 20:17:09 -07:00
commit eb9100955d
6 changed files with 547 additions and 544 deletions

View File

@ -33,17 +33,31 @@ Installation & Usage
### Emacs 24
1. Add the `emacs-color-theme-solarized` directory to your Emacs `custom-theme-load-path`, or install from marmalade using `package-install color-theme-solarized`
2. Add `(load-theme 'solarized-[light|dark] t)` to your Emacs init file.
1. Add the `emacs-color-theme-solarized` directory to your Emacs `custom-theme-load-path`.
2. Add `(load-theme 'solarized 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. Add `(require 'color-theme-solarized)` and `(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]`.
### all versions
To switch between the light and dark variations of Solarized, set the frames `background-mode`. This can be accomplished globally using `M-x customize-variable frame-background-mode` or on a per-frame basis with `(set-frame-parameter nil 'background-mode 'light)` (or `'dark`). Remember to call `enable-theme` after changing the background mode to update the state of the theme.
This allows you to have a mix of light and dark frames. I tend to use light frames in the GUI and dark frames in my terminal, so I use the following code:
```common-lisp
(add-hook 'after-make-frame-functions
(lambda (frame)
(set-frame-parameter frame
'background-mode
(if (display-graphic-p frame) 'light 'dark))
(enable-theme 'solarized)))
```
### IMPORTANT NOTE FOR TERMINAL USERS:
@ -58,13 +72,6 @@ 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.
@ -76,7 +83,6 @@ 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
@ -88,19 +94,6 @@ but does include several variables that can be customized.
### 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
@ -126,10 +119,11 @@ but does include several variables that can be customized.
* 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.
results in incorrect color handling on Macs. If you are using Emacs on a
Mac, we try to determine this value automatically. 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
----------

View File

@ -23,36 +23,29 @@
(require 'color-theme))
;;;###autoload
(defun color-theme-solarized (mode)
(defun color-theme-solarized ()
"Color theme by Ethan Schoonover, created 2011-03-24.
Ported to Emacs by Greg Pfeil, http://ethanschoonover.com/solarized."
(interactive "Slight or dark? ")
(interactive)
(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))))
`(color-theme-solarized () () ,@(solarized-color-definitions))))
(add-to-list 'color-themes
`(color-theme-solarized
"Solarized"
,solarized-description))
;;;###autoload
(defun color-theme-solarized-dark ()
(interactive)
(color-theme-solarized 'dark))
"Color theme by Ethan Schoonover, created 2011-03-24.
Ported to Emacs by Greg Pfeil, http://ethanschoonover.com/solarized."
(declare (obsolete color-theme-solarized "2013-05-01"))
(color-theme-solarized))
;;;###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))
"Color theme by Ethan Schoonover, created 2011-03-24.
Ported to Emacs by Greg Pfeil, http://ethanschoonover.com/solarized."
(declare (obsolete color-theme-solarized "2013-05-01"))
(color-theme-solarized))
(provide 'color-theme-solarized)

View File

@ -2,4 +2,10 @@
(locate-file "solarized-definitions.el" custom-theme-load-path
'("c" "")))
(create-solarized-theme dark)
(create-solarized-theme solarized-dark
(concat "This theme is obsolete since 2013-05-01;
use `solarized' instead.
"
solarized-description)
(solarized-color-definitions))

View File

@ -40,11 +40,11 @@ down in order to expand or compress the tonal range displayed."
:options '(high normal low)
:group 'solarized)
(defcustom solarized-broken-srgb (if (and (eq system-type 'darwin)
(eq window-system 'ns))
(not (and (boundp 'ns-use-srgb-colorspace)
ns-use-srgb-colorspace))
nil)
(defcustom solarized-broken-srgb
(if (and (eq system-type 'darwin) (eq window-system 'ns))
(not (and (boundp 'ns-use-srgb-colorspace)
ns-use-srgb-colorspace))
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
@ -77,500 +77,498 @@ the \"Gen RGB\" column in solarized-definitions.el to improve them further."
column is a different set, one of which will be chosen based on term
capabilities, etc.")
(defvar which-flet
"This variable will store either flet or cl-flet depending on the Emacs
version. flet was deprecated in in 24.3")
(if (or (> emacs-major-version 24)
(and (>= emacs-major-version 24) (> emacs-minor-version 2)))
(fset 'which-flet 'cl-flet)
(fset 'which-flet 'flet))
(defun solarized-color-definitions (mode)
(which-flet ((find-color (name)
(let ((index (if window-system
(if solarized-degrade
3
(if solarized-broken-srgb 2 1))
(case (display-color-cells)
(16 4)
(8 5)
(otherwise 3)))))
(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))
(bright-bold (if solarized-bold 'normal 'bold))
(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 ((< (display-color-cells) 16)
(setf back nil))
((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)))
;; NOTE: We try to turn an 8-color term into a 10-color term by not
;; using default background and foreground colors, expecting the
;; user to have the right colors set for them.
(let ((bg-back `(:background ,back))
(bg-base03 `(:background ,base03))
(bg-base02 `(:background ,base02))
(bg-base01 `(:background ,base01))
(bg-base00 `(:background ,base00))
(bg-base0 `(:background ,base0))
(bg-base1 `(:background ,base1))
(bg-base2 `(:background ,base2))
(bg-base3 `(:background ,base3))
(bg-green `(:background ,green))
(bg-yellow `(:background ,yellow))
(bg-orange `(:background ,orange))
(bg-red `(:background ,red))
(bg-magenta `(:background ,magenta))
(bg-violet `(:background ,violet))
(bg-blue `(:background ,blue))
(bg-cyan `(:background ,cyan))
(defun solarized-face-for-index (facespec index &optional light)
"Creates a face from facespec where the colors use the names from
`solarized-colors`."
(let ((new-fontspec (copy-list facespec)))
(dolist (property '(:foreground :background :color))
(let ((color-name (plist-get new-fontspec property)))
(when color-name
;; NOTE: We try to turn an 8-color term into a 10-color term by not
;; using default background and foreground colors, expecting the
;; user to have the right colors set for them.
(when (and (= index 5)
(or (and (eq property :background)
(eq color-name 'back))
(and (eq property :foreground)
(member color-name '(base0 base1)))))
(setf color-name nil))
(when (eq color-name 'back)
(setf color-name 'base03))
(when light
(setf color-name
(case color-name
(base03 'base3)
(base02 'base2)
(base01 'base1)
(base00 'base0)
(base0 'base00)
(base1 'base01)
(base2 'base02)
(base3 'base03)
(otherwise color-name))))
(plist-put new-fontspec
property
(nth index (assoc color-name solarized-colors))))))
(when (plist-get new-fontspec :box)
(plist-put new-fontspec
:box
(solarized-face-for-index (plist-get new-fontspec :box) index
light)))
new-fontspec))
(fg-base03 `(:foreground ,base03))
(fg-base02 `(:foreground ,base02))
(fg-base01 `(:foreground ,base01))
(fg-base00 `(:foreground ,base00))
(fg-base0 `(:foreground ,(when (<= 16 (display-color-cells))
base0)))
(fg-base1 `(:foreground ,(when (<= 16 (display-color-cells))
base1)))
(fg-base2 `(:foreground ,base2))
(fg-base3 `(:foreground ,base3))
(fg-green `(:foreground ,green))
(fg-yellow `(:foreground ,yellow))
(fg-orange `(:foreground ,orange))
(fg-red `(:foreground ,red))
(fg-magenta `(:foreground ,magenta))
(fg-violet `(:foreground ,violet))
(fg-blue `(:foreground ,blue))
(fg-cyan `(:foreground ,cyan))
(defun create-face-spec (name facespec)
`(,name ((((background dark) (type graphic))
,(solarized-face-for-index facespec
(cond (solarized-degrade 3)
(solarized-broken-srgb 2)
(t 1))))
(((background dark) (type tty) (min-colors 256))
,(solarized-face-for-index facespec 3))
(((background dark) (type tty) (min-colors 16))
,(solarized-face-for-index facespec 4))
(((background dark) (type tty) (min-colors 8))
,(solarized-face-for-index facespec 5))
(((background light) (type graphic))
,(solarized-face-for-index facespec
(cond (solarized-degrade 3)
(solarized-broken-srgb 2)
(t 1))
t))
(((background light) (type tty) (min-colors 256))
,(solarized-face-for-index facespec 3 t))
(((background light) (type tty) (min-colors 16))
,(solarized-face-for-index facespec 4 t))
(((background light) (type tty) (min-colors 8))
,(solarized-face-for-index facespec 5 t)))))
(fmt-none `(:weight normal :slant normal :underline nil :inverse-video nil))
(fmt-bold `(:weight ,bold :slant normal :underline nil :inverse-video nil))
(fmt-bldi `(:weight ,bold :underline nil :inverse-video nil))
(fmt-undr `(:weight normal :slant normal :underline ,underline :inverse-video nil))
(fmt-undb `(:weight ,bold :slant normal :underline ,underline :inverse-video nil))
(fmt-undi `(:weight normal :underline ,underline :inverse-video nil))
(fmt-uopt `(:weight normal :slant normal :underline ,opt-under :inverse-video nil))
;; FIXME: not quite the same
(fmt-curl `(:weight normal :slant normal :underline t :inverse-video nil))
(fmt-ital `(:weight normal :slant ,italic :underline nil :inverse-video nil))
;; FIXME: not quite the same
(fmt-stnd `(:weight normal :slant normal :underline nil :inverse-video t))
(fmt-revr `(:weight normal :slant normal :underline nil :inverse-video t))
(fmt-revb `(:weight ,bold :slant normal :underline nil :inverse-video t))
(fmt-revbb `(:weight ,bright-bold :slant normal :underline nil :inverse-video t))
(fmt-revbbu `(:weight ,bright-bold :slant normal :underline ,underline :inverse-video t)))
`((;; basic
(default ((t (,@fg-base0 ,@bg-back)))) ; Normal
(cursor ((t (,@fg-base03 ,@bg-base0)))) ; Cursor
(error ((t (,@fmt-bold ,@fg-red)))) ; Error
(escape-glyph-face ((t (,@fg-red))))
(fringe ((t (,@fg-base01 ,@bg-base02))))
(linum ((t (,@fg-base01 ,@bg-base02))))
(header-line ((t (,@fg-base0 ,@bg-base02 ,@fmt-revbb)))) ; Pmenu
(highlight ((t (,@bg-base02))))
(hl-line ((t (:underline ,opt-under ,@bg-base02)))) ; CursorLine
(isearch ((t (,@fmt-stnd ,@fg-orange ,@bg-back)))) ; IncSearch
(isearch-fail ((t (,@fmt-stnd ,@fg-orange ,@bg-back)))) ; IncSearch
(lazy-highlight ((t (,@fmt-revr ,@fg-yellow ,@bg-back)))) ; Search
(match ((t (,@fmt-revr ,@fg-yellow ,@bg-back)))) ; Occur
(link ((t (,@fmt-undr ,@fg-violet))))
(link-visited ((t (,@fmt-undr ,@fg-magenta))))
(menu ((t (,@fg-base0 ,@bg-base02))))
(minibuffer-prompt ((t (,@fmt-bold ,@fg-cyan)))) ; Question
(mode-line ; StatusLine
((t (,@fg-base1 ,@bg-base02 ,@fmt-revbb :box nil))))
(mode-line-inactive ; StatusLineNC
((t (,@fg-base00 ,@bg-base02 ,@fmt-revbb :box nil))))
(region ((t (,@fg-base01 ,@bg-base03 ,@fmt-revbb)))) ; Visual
(secondary-selection ((t (,@bg-base02))))
(shadow ((t (,@fg-base01))))
(trailing-whitespace ((t (,@fmt-revr ,@fg-red))))
(vertical-border ((t (,@fg-base0))))
;; comint
(comint-highlight-prompt ((t (,@fg-blue))))
;; compilation
(compilation-info ((t (,@fmt-bold ,@fg-green))))
(compilation-warning ((t (,@fmt-bold ,@fg-orange))))
;; custom
(custom-button
((t (,@fg-base1 ,@bg-base02
:box (:line-width 2 :style released-button)))))
(custom-button-mouse
((t (,@fmt-revr ,@fg-base1 ,@bg-base02 :inherit custom-button))))
(custom-button-pressed
((t (,@fmt-revr ,@fg-base1 ,@bg-base02
:box (:line-width 2 :style pressed-button)
:inherit custom-button-mouse))))
(custom-changed ((t (,@fmt-revr ,@fg-blue ,@bg-base3))))
(custom-comment ((t (,@fg-base1 ,@bg-base02))))
(custom-comment-tag ((t (,@fg-base1 ,@bg-base02))))
(custom-documentation ((t (:inherit default))))
(custom-group-tag ((t (,@fg-base1))))
(custom-group-tag-1 ((t (,fmt-bold ,@fg-base1))))
(custom-invalid ((t (,@fmt-revr ,@fg-red ,@bg-back))))
(custom-link ((t (,@fg-violet))))
(custom-state ((t (,@fg-green))))
(custom-variable-tag ((t (,@fg-base1))))
;; diff - DiffAdd, DiffChange, DiffDelete, and DiffText
,@(case solarized-diff-mode
(high
`((diff-added ((t (,@fmt-revr ,@fg-green))))
(diff-changed ((t (,@fmt-revr ,@fg-yellow))))
(diff-removed ((t (,@fmt-revr ,@fg-red))))
(diff-refine-change
((t (,@fmt-revr ,@fg-blue ,@bg-back))))))
(low
`((diff-added ((t (,@fmt-undr ,@fg-green))))
(diff-changed ((t (,@fmt-undr ,@fg-yellow))))
(diff-removed ((t (,@fmt-bold ,@fg-red))))
(diff-refine-change
((t (,@fmt-undr ,@fg-blue ,@bg-back))))))
(normal
(if window-system
`((diff-added ((t (,@fmt-bold ,@fg-green))))
(diff-changed ((t (,@fmt-bold ,@fg-yellow))))
(diff-removed ((t (,@fmt-bold ,@fg-red))))
(diff-refine-change
((t (,@fmt-bold ,@fg-blue ,@bg-back)))))
`((diff-added ((t (,@fg-green))))
(diff-changed ((t (,@fg-yellow))))
(diff-removed ((t (,@fg-red))))
(diff-refine-change ((t (,@fg-blue ,@bg-back))))))))
(diff-file-header ((t (,@bg-back))))
(diff-header ((t (,@fg-base1 ,@bg-back))))
;; IDO
(ido-only-match ((t (,@fg-green))))
(ido-subdir ((t (,@fg-blue))))
(ido-first-match ((t (,@fmt-bold ,@fg-green))))
;; emacs-wiki
(emacs-wiki-bad-link-face ((t (,@fmt-undr ,@fg-red))))
(emacs-wiki-link-face ((t (,@fmt-undr ,@fg-blue))))
(emacs-wiki-verbatim-face ((t (,@fmt-undr ,@fg-base00))))
;; eshell
(eshell-ls-archive ((t (,@fg-magenta))))
(eshell-ls-backup ((t (,@fg-yellow))))
(eshell-ls-clutter ((t (,@fg-orange))))
(eshell-ls-directory ((t (,@fg-blue)))) ; Directory
(eshell-ls-executable ((t (,@fg-green))))
(eshell-ls-missing ((t (,@fg-red))))
(eshell-ls-product ((t (,@fg-yellow))))
(eshell-ls-readonly ((t (,@fg-base1))))
(eshell-ls-special ((t (,@fg-violet))))
(eshell-ls-symlink ((t (,@fg-cyan))))
(eshell-ls-unreadable ((t (,@fg-base00))))
(eshell-prompt ((t (,@fmt-bold ,@fg-green))))
;; font-lock
(font-lock-builtin-face ((t (,@fmt-none ,@fg-green)))) ; Statement
(font-lock-comment-face ((t (,@fmt-ital ,@fg-base01)))) ; Comment
(font-lock-constant-face ((t (,@fmt-none ,@fg-cyan)))) ; Constant
(font-lock-function-name-face ; Identifier
((t (,@fmt-none ,@fg-blue))))
(font-lock-keyword-face ((t (,@fmt-none ,@fg-green)))) ; Statement
(font-lock-string-face ((t (,@fmt-none ,@fg-cyan)))) ; Constant
(font-lock-type-face ((t (,@fmt-none ,@fg-yellow)))) ; Type
(font-lock-variable-name-face ; Identifier
((t (,@fmt-none ,@fg-blue))))
(font-lock-warning-face ((t (,@fmt-bold ,@fg-red)))) ; Error
(font-lock-doc-face ((t (,@fmt-ital ,@fg-base01)))) ; Comment
(font-lock-doc-string-face ; Comment (XEmacs-only)
((t (,@fmt-ital ,@fg-base01))))
(font-lock-color-constant-face ((t (,@fmt-none ,@fg-green))))
(font-lock-comment-delimiter-face ; Comment
((t (,@fmt-ital ,@fg-base01))))
(font-lock-preprocessor-face ; PreProc
((t (,@fmt-none ,@fg-orange))))
(font-lock-reference-face ((t (,@fmt-none ,@fg-cyan))))
(font-lock-negation-char-face ((t (,@fmt-none ,@fg-red))))
(font-lock-other-type-face ((t (,@fmt-ital ,@fg-blue))))
(font-lock-regexp-grouping-construct
((t (,@fmt-none ,@fg-orange))))
(font-lock-special-keyword-face ; Special
((t (,@fmt-none ,@fg-red))))
(font-lock-exit-face ((t (,@fmt-none ,@fg-red))))
(font-lock-other-emphasized-face ((t (,@fmt-bldi ,@fg-violet))))
(font-lock-regexp-grouping-backslash
((t (,@fmt-none ,@fg-yellow))))
;; info
(info-xref ((t (,@fmt-undr ,@fg-blue))))
(info-xref-visited ((t (,@fg-magenta :inherit info-xref))))
;; org
(org-hide ((t (,@fg-base03))))
(org-todo ((t (,@fmt-bold ,@fg-base03 ,@bg-red))))
(org-done ((t (,@fmt-bold ,@fg-green))))
(org-todo-kwd-face ((t (,@fg-red ,@bg-base03))))
(org-done-kwd-face ((t (,@fg-green ,@bg-base03))))
(org-project-kwd-face ((t (,@fg-violet ,@bg-base03))))
(org-waiting-kwd-face ((t (,@fg-orange ,@bg-base03))))
(org-someday-kwd-face ((t (,@fg-blue ,@bg-base03))))
(org-started-kwd-face ((t (,@fg-yellow ,@bg-base03))))
(org-cancelled-kwd-face ((t (,@fg-green ,@bg-base03))))
(org-delegated-kwd-face ((t (,@fg-cyan ,@bg-base03))))
;; table
(table-cell ((t (,@fmt-none ,@fg-base0 ,@bg-back))))
;; outline - pandocBlockQuoteLeader*
(outline-1 ((t (,@fmt-none ,@fg-blue))))
(outline-2 ((t (,@fmt-none ,@fg-cyan))))
(outline-3 ((t (,@fmt-none ,@fg-yellow))))
(outline-4 ((t (,@fmt-none ,@fg-red))))
(outline-5 ((t (,@fmt-none ,@fg-base0))))
(outline-6 ((t (,@fmt-none ,@fg-base01))))
(outline-7 ((t (,@fmt-none ,@fg-orange))))
(outline-8 ((t (,@fmt-none ,@fg-violet))))
;; speedbar
(speedbar-button-face ((t (,@fmt-none ,@fg-base1))))
(speedbar-directory-face ((t (,@fmt-none ,@fg-orange))))
(speedbar-file-face ((t (,@fmt-none ,@fg-green))))
(speedbar-highlight-face ((t (,@bg-base02))))
(speedbar-selected-face ((t (,@fmt-undr ,@fg-yellow))))
(speedbar-separator-face ((t (,@fmt-stnd))))
(speedbar-tag-face ((t (,@fmt-none ,@fg-blue))))
;; show-paren - MatchParen
(show-paren-match ((t (,@fmt-bold ,@fg-cyan ,@bg-base02))))
(show-paren-mismatch ((t (,@fmt-bold ,@fg-red ,@bg-base01))))
;; widgets
(widget-field
((t (,@fg-base1 ,@bg-base02 :box (:line-width 1)
:inherit default))))
(widget-single-line-field ((t (:inherit widget-field))))
;; extra modules
;; -------------
;; ace-jump-mode
(ace-jump-face-background ((t (,@fmt-none ,@fg-base01))))
(ace-jump-face-foreground ((t (,@fmt-bold ,@fg-red))))
;; bm visual bookmarks
(bm-fringe-face ((t (,@bg-orange ,@fg-base03))))
(bm-fringe-persistent-face ((t (,@bg-blue ,@fg-base03))))
;; Flymake
(flymake-errline ((t (,@fmt-revr ,@fg-red ,@bg-back)))) ; ErrorMsg
(flymake-warnline ; WarningMsg
((t (,@fmt-bold ,@fg-red ,@bg-back))))
;; column-marker
(column-marker-1 ((t (,@bg-base01))))
(column-marker-2 ((t (,@bg-cyan))))
(column-marker-3 ((t (,@bg-violet))))
;; jabber
(jabber-activity-face ((t (,@fmt-bold ,@fg-red))))
(jabber-activity-personal-face ((t (,@fmt-bold ,@fg-blue))))
(jabber-chat-error ((t (,@fmt-bold ,@fg-red))))
(jabber-chat-prompt-foreign ((t (,@fmt-bold ,@fg-red))))
(jabber-chat-prompt-local ((t (,@fmt-bold ,@fg-blue))))
(jabber-chat-prompt-system ((t (,@fmt-bold ,@fg-green))))
(jabber-chat-text-foreign ((t (,@fg-base1))))
(jabber-chat-text-local ((t (,@fg-base0))))
(jabber-chat-rare-time-face ((t (,@fmt-undr ,@fg-green))))
(jabber-roster-user-away ((t (,@fmt-ital ,@fg-green))))
(jabber-roster-user-chatty ((t (,@fmt-bold ,@fg-orange))))
(jabber-roster-user-dnd ((t (,@fmt-ital ,@fg-red))))
(jabber-roster-user-error ((t (:weight light :slant italic ,@fg-red))))
(jabber-roster-user-offline ((t (,@fg-base01))))
(jabber-roster-user-online ((t (,@fmt-bold ,@fg-blue))))
(jabber-roster-user-xa ((t (,@fmt-ital ,@fg-magenta))))
;; git-gutter
(git-gutter:modified ((t (,@fg-violet))))
(git-gutter:added ((t (,@fg-green))))
(git-gutter:deleted ((t (,@fg-red))))
;; gnus - these are taken from mutt, not VIM
(gnus-cite-1 ((t (,@fmt-none ,@fg-blue)))) ; quoted
(gnus-cite-2 ((t (,@fmt-none ,@fg-cyan)))) ; quoted1
(gnus-cite-3 ((t (,@fmt-none ,@fg-yellow)))) ; quoted2
(gnus-cite-4 ((t (,@fmt-none ,@fg-red)))) ; quoted3
(gnus-cite-5 ((t (,@fmt-none ,@fg-orange)))) ; quoted4
(gnus-cite-6 ((t (,@fmt-none ,@fg-violet))))
(gnus-cite-7 ((t (,@fmt-none ,@fg-green))))
(gnus-cite-8 ((t (,@fmt-none ,@fg-magenta))))
(gnus-cite-9 ((t (,@fmt-none ,@fg-base00))))
(gnus-cite-10 ((t (,@fmt-none ,@fg-base01))))
(gnus-cite-11 ((t (,@fmt-none ,@fg-base02))))
(gnus-group-mail-1 ((t (,@fmt-bold ,@fg-base3))))
(gnus-group-mail-1-empty ((t (,@fg-base3))))
(gnus-group-mail-2 ((t (,@fmt-bold ,@fg-base2))))
(gnus-group-mail-2-empty ((t (,@fg-base2))))
(gnus-group-mail-3 ((t (,@fmt-bold ,@fg-magenta))))
(gnus-group-mail-3-empty ((t (,@fg-magenta))))
(gnus-group-mail-low ((t (,@fmt-bold ,@fg-base00))))
(gnus-group-mail-low-empty ((t (,@fg-base00))))
(gnus-group-news-1 ((t (,@fmt-bold ,@fg-base1))))
(gnus-group-news-1-empty ((t (,@fg-base1))))
(gnus-group-news-2 ((t (,@fmt-bold ,@fg-blue))))
(gnus-group-news-2-empty ((t (,@fg-blue))))
(gnus-group-news-low ((t (,@fmt-bold ,@fg-violet))))
(gnus-group-news-low-empty ((t (,@fg-violet))))
(gnus-emphasis-highlight-words ; highlight
((t (,@fmt-none ,fg-yellow))))
(gnus-header-content ((t (,@fmt-none ,@fg-base01)))) ; hdrdefault
(gnus-header-from ((t (,@fmt-none ,@fg-base00)))) ; header ^From
(gnus-header-name ((t (,@fmt-none ,@fg-base01)))) ; hdrdefault
(gnus-header-newsgroups ; hdrdefault
((t (,@fmt-none ,@fg-base02))))
(gnus-header-subject ; header ^Subject
((t (,@fmt-none ,@fg-blue))))
(gnus-server-agent ((t (,@fmt-bold ,@fg-base3))))
(gnus-server-closed ((t (,@fmt-ital ,@fg-base1))))
(gnus-server-denied ((t (,@fmt-bold ,@fg-base2))))
(gnus-server-offline ((t (,@fmt-bold ,@fg-green))))
(gnus-server-opened ((t (,@fmt-bold ,@fg-cyan))))
(gnus-signature ((t (,@fmt-none ,@fg-base01)))) ; signature
(gnus-splash ((t (,@fg-base2))))
(gnus-summary-cancelled ; deleted messages
((t (,@fmt-none ,@fg-red))))
(gnus-summary-high-ancient
((t (,@fmt-bold :inherit gnus-summary-normal-ancient))))
(gnus-summary-high-read
((t (,@fmt-bold :inherit gnus-summary-normal-read))))
(gnus-summary-high-ticked
((t (,@fmt-bold :inherit gnus-summary-normal-ticked))))
(gnus-summary-high-undownloaded
((t (,@fmt-bold :inherit gnus-summary-normal-undownloaded))))
(gnus-summary-high-unread
((t (,@fmt-bold :inherit gnus-summary-normal-unread))))
(gnus-summary-low-ancient
((t (,@fmt-ital :inherit gnus-summary-normal-ancient))))
(gnus-summary-low-read
((t (,@fmt-ital :inherit gnus-summary-normal-ancient))))
(gnus-summary-low-unread
((t (,@fmt-ital :inherit gnus-summary-normal-unread))))
(gnus-summary-low-ticked
((t (,@fmt-ital :inherit gnus-summary-normal-ancient))))
(gnus-summary-low-undownloaded
((t (,@fmt-ital :inherit gnus-summary-normal-ancient))))
(gnus-summary-normal-ancient ; old messages
((t (,@fmt-none ,@fg-blue))))
(gnus-summary-normal-read ; read messages
((t (,@fmt-none ,@fg-base01))))
(gnus-summary-normal-ticked ; flagged
((t (,@fmt-none ,@fg-red))))
(gnus-summary-normal-undownloaded ((t (,@fmt-none ,@fg-base2))))
(gnus-summary-normal-unread ; unread messages
((t (,@fmt-none ,@fg-blue))))
(gnus-summary-selected ; indicator
((t (,@fmt-none ,@fg-base03 ,@bg-yellow))))
;; Message
(message-mml ((t (,@fg-blue))))
(message-cited-text ((t (,@fg-base2))))
(message-separator ((t (,@fg-base3))))
(message-header-xheader ((t (,@fg-violet))))
(message-header-name ((t (,@fg-cyan))))
(message-header-other ((t (,@fg-red))))
(message-header-newsgroups ((t (,@fmt-bldi ,@fg-yellow))))
(message-header-subject ((t (,@fg-base00))))
(message-header-cc ((t (,@fmt-bold ,@fg-green))))
(message-header-to ((t (,@fmt-bold ,@fg-base1))))
;; parenface
(paren-face ((t (,@fg-base01))))
;; rainbow-delimiters
(rainbow-delimiters-depth-1-face ((t (,@fg-cyan))))
(rainbow-delimiters-depth-2-face ((t (,@fg-yellow))))
(rainbow-delimiters-depth-3-face ((t (,@fg-blue))))
(rainbow-delimiters-depth-4-face ((t (,@fg-red))))
(rainbow-delimiters-depth-5-face ((t (,@fg-green))))
(rainbow-delimiters-depth-6-face ((t (,@fg-blue))))
(rainbow-delimiters-depth-7-face ((t (,@fg-orange))))
(rainbow-delimiters-depth-8-face ((t (,@fg-magenta))))
(rainbow-delimiters-depth-9-face ((t (,@fg-base0))))
;; slime
(slime-error-face ((t (,@fmt-revr ,@fg-red)))) ; ErrorMsg
(slime-note-face ((t (,@fg-yellow))))
(slime-repl-inputted-output-face ((t (,@fg-red))))
(slime-repl-output-mouseover-face ((t (:box (:color ,base3)))))
(slime-style-warning-face ((t (,@fmt-bold ,@fg-orange))))
(slime-warning-face ((t (,@fmt-bold ,@fg-red)))) ; WarningMsg
;; tabbar
(tabbar-selected ((t (,@bg-blue ,@fg-base02))))
(tabbar-unselected ((t (,@bg-base0 ,@fg-base02))))
(tabbar-modified ((t (,@bg-green ,@fg-base02))))
;; whitespace
(whitespace-empty ((t (,@fg-red))))
(whitespace-hspace ((t (,@fg-orange))))
(whitespace-indentation ((t (,@fg-base02))))
(whitespace-space ((t (,@fg-base02))))
(whitespace-space-after-tab ((t (,@fg-cyan))))
(whitespace-space-before-tab ((t (,@fmt-bold ,@fg-red))))
(whitespace-tab ((t (,@fg-base02))))
(whitespace-trailing ((t (,@fmt-bold ,@fg-red ,@bg-base02))))
(whitespace-highlight-face ((t (,@fg-red ,@bg-blue))))
(whitespace-line ((t (,@fg-magenta ,@bg-base03))))
;; rcirc
(rcirc-my-nick ((t (:foreground ,blue))))
(rcirc-nick-in-message ((t (:foreground ,orange))))
(rcirc-other-nick ((t (:foreground ,green))))
(rcirc-prompt ((t (:foreground ,yellow))))
(rcirc-bright-nick ((t (:foreground ,magenta))))
(rcirc-server ((t (:foreground ,base1))))
(rcirc-timestamp ((t (:foreground ,base01))))
;; ERC
(erc-input-face ((t (:foreground ,base01))))
(erc-keyword-face ((t (,@fmt-bldi ,@fg-yellow))))
(erc-my-nick-face ((t (:foreground ,blue))))
(erc-nick-default-face ((t (,@fmt-none ,@fg-cyan))))
(erc-notice-face ((t (,@fmt-none ,@fg-blue))))
(erc-timestamp-face ((t (:foreground ,base01))))
;;font-latex
(font-latex-warning-face ((t (,@fg-red))))
(font-latex-sectioning-5-face ((t (,@fg-violet))))
;;flyspell
(flyspell-incorrect ((t (,@fg-red))))
(flyspell-duplicate ((t (,@fg-yellow))))
;;ansi-term
(term-color-black ((t ( ,@fg-base02))))
(term-color-red ((t ( ,@fg-red))))
(term-color-green ((t ( ,@fg-green))))
(term-color-yellow ((t ( ,@fg-yellow))))
(term-color-blue ((t ( ,@fg-blue))))
(term-color-magenta ((t ( ,@fg-magenta))))
(term-color-cyan ((t ( ,@fg-cyan))))
(term-color-white ((t ( ,@fg-base00)))))
(defun solarized-color-definitions ()
(let ((bold (if solarized-bold 'bold 'normal))
(bright-bold (if solarized-bold 'normal 'bold))
(underline (if solarized-underline t nil))
(opt-under nil)
(italic (if solarized-italic 'italic 'normal)))
(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)))
(let ((bg-back '(:background back))
(bg-base03 '(:background base03))
(bg-base02 '(:background base02))
(bg-base01 '(:background base01))
(bg-base00 '(:background base00))
(bg-base0 '(:background base0))
(bg-base1 '(:background base1))
(bg-base2 '(:background base2))
(bg-base3 '(:background base3))
(bg-green '(:background green))
(bg-yellow '(:background yellow))
(bg-orange '(:background orange))
(bg-red '(:background red))
(bg-magenta '(:background magenta))
(bg-violet '(:background violet))
(bg-blue '(:background blue))
(bg-cyan '(:background cyan))
((foreground-color . ,(when (<= 16 (display-color-cells)) base0))
(background-color . ,back)
(background-mode . ,mode)
(cursor-color . ,(when (<= 16 (display-color-cells))
base0))
(ansi-color-names-vector . [,base02 ,red ,green ,yellow ,blue ,magenta ,cyan ,base00]))))))))
(fg-base03 '(:foreground base03))
(fg-base02 '(:foreground base02))
(fg-base01 '(:foreground base01))
(fg-base00 '(:foreground base00))
(fg-base0 '(:foreground base0))
(fg-base1 '(:foreground base1))
(fg-base2 '(:foreground base2))
(fg-base3 '(:foreground base3))
(fg-green '(:foreground green))
(fg-yellow '(:foreground yellow))
(fg-orange '(:foreground orange))
(fg-red '(:foreground red))
(fg-magenta '(:foreground magenta))
(fg-violet '(:foreground violet))
(fg-blue '(:foreground blue))
(fg-cyan '(:foreground cyan))
(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))))
(fmt-none `(:weight normal :slant normal :underline nil :inverse-video nil))
(fmt-bold `(:weight ,bold :slant normal :underline nil :inverse-video nil))
(fmt-bldi `(:weight ,bold :underline nil :inverse-video nil))
(fmt-undr `(:weight normal :slant normal :underline ,underline :inverse-video nil))
(fmt-undb `(:weight ,bold :slant normal :underline ,underline :inverse-video nil))
(fmt-undi `(:weight normal :underline ,underline :inverse-video nil))
(fmt-uopt `(:weight normal :slant normal :underline ,opt-under :inverse-video nil))
;; FIXME: not quite the same
(fmt-curl `(:weight normal :slant normal :underline t :inverse-video nil))
(fmt-ital `(:weight normal :slant ,italic :underline nil :inverse-video nil))
;; FIXME: not quite the same
(fmt-stnd `(:weight normal :slant normal :underline nil :inverse-video t))
(fmt-revr `(:weight normal :slant normal :underline nil :inverse-video t))
(fmt-revb `(:weight ,bold :slant normal :underline nil :inverse-video t))
(fmt-revbb `(:weight ,bright-bold :slant normal :underline nil :inverse-video t))
(fmt-revbbu `(:weight ,bright-bold :slant normal :underline ,underline :inverse-video t)))
(eval-after-load 'ansi-color
'(setf ansi-color-names-vector [,base02 ,red ,green ,yellow ,blue ,magenta ,cyan ,base00]))
(mapcar (lambda (face) (apply 'create-face-spec face))
`(;; basic
(default (,@fg-base0 ,@bg-back)) ; Normal
(cursor (,@fg-base03 ,@bg-base0)) ; Cursor
(error (,@fmt-bold ,@fg-red)) ; Error
(escape-glyph-face (,@fg-red))
(fringe (,@fg-base01 ,@bg-base02))
(linum (,@fg-base01 ,@bg-base02))
(header-line (,@fg-base0 ,@bg-base02 ,@fmt-revbb)) ; Pmenu
(highlight (,@bg-base02))
(hl-line (:underline ,opt-under ,@bg-base02)) ; CursorLine
(isearch (,@fmt-stnd ,@fg-orange ,@bg-back)) ; IncSearch
(isearch-fail (,@fmt-stnd ,@fg-orange ,@bg-back)) ; IncSearch
(lazy-highlight (,@fmt-revr ,@fg-yellow ,@bg-back)) ; Search
(link (,@fmt-undr ,@fg-violet))
(link-visited (,@fmt-undr ,@fg-magenta))
(match ((t (,@fmt-revr ,@fg-yellow ,@bg-back)))) ; Occur
(menu (,@fg-base0 ,@bg-base02))
(minibuffer-prompt (,@fmt-bold ,@fg-cyan)) ; Question
(mode-line ; StatusLine
(,@fg-base1 ,@bg-base02 ,@fmt-revbb :box nil))
(mode-line-inactive ; StatusLineNC
(,@fg-base00 ,@bg-base02 ,@fmt-revbb :box nil))
(region (,@fg-base01 ,@bg-base03 ,@fmt-revbb)) ; Visual
(secondary-selection (,@bg-base02))
(shadow (,@fg-base01))
(trailing-whitespace (,@fmt-revr ,@fg-red))
(vertical-border (,@fg-base0))
;; comint
(comint-highlight-prompt (,@fg-blue))
;; compilation
(compilation-info (,@fmt-bold ,@fg-green))
(compilation-warning (,@fmt-bold ,@fg-orange))
;; custom
(custom-button
(,@fg-base1 ,@bg-base02 :box (:line-width 2 :style released-button)))
(custom-button-mouse
(,@fmt-revr ,@fg-base1 ,@bg-base02 :inherit custom-button))
(custom-button-pressed
(,@fmt-revr ,@fg-base1 ,@bg-base02
:box (:line-width 2 :style pressed-button)
:inherit custom-button-mouse))
(custom-changed (,@fmt-revr ,@fg-blue ,@bg-base3))
(custom-comment (,@fg-base1 ,@bg-base02))
(custom-comment-tag (,@fg-base1 ,@bg-base02))
(custom-documentation (:inherit default))
(custom-group-tag (,@fg-base1))
(custom-group-tag-1 (,@fmt-bold ,@fg-base1))
(custom-invalid (,@fmt-revr ,@fg-red ,@bg-back))
(custom-link (,@fg-violet))
(custom-state (,@fg-green))
(custom-variable-tag (,@fg-base1))
;; diff - DiffAdd, DiffChange, DiffDelete, and DiffText
,@(case solarized-diff-mode
(high
`((diff-added (,@fmt-revr ,@fg-green))
(diff-changed (,@fmt-revr ,@fg-yellow))
(diff-removed (,@fmt-revr ,@fg-red))
(diff-refine-change
(,@fmt-revr ,@fg-blue ,@bg-back))))
(low
`((diff-added (,@fmt-undr ,@fg-green))
(diff-changed (,@fmt-undr ,@fg-yellow))
(diff-removed (,@fmt-bold ,@fg-red))
(diff-refine-change (,@fmt-undr ,@fg-blue ,@bg-back))))
(normal
(if window-system
`((diff-added (,@fmt-bold ,@fg-green ,@bg-base02))
(diff-changed (,@fmt-bold ,@fg-yellow ,@bg-base02))
(diff-removed (,@fmt-bold ,@fg-red ,@bg-base02))
(diff-refine-change (,@fmt-bold ,@fg-blue ,@bg-base02)))
`((diff-added (,@fg-green ,@bg-base02))
(diff-changed (,@fg-yellow ,@bg-base02))
(diff-removed (,@fg-red ,@bg-base02))
(diff-refine-change (,@fg-blue ,@bg-base02))))))
(diff-file-header (,@bg-back))
(diff-header (,@fg-base1 ,@bg-back))
;; IDO
(ido-only-match (,@fg-green))
(ido-subdir (,@fg-blue))
(ido-first-match (,@fmt-bold ,@fg-green))
;; emacs-wiki
(emacs-wiki-bad-link-face (,@fmt-undr ,@fg-red))
(emacs-wiki-link-face (,@fmt-undr ,@fg-blue))
(emacs-wiki-verbatim-face (,@fmt-undr ,@fg-base00))
;; eshell
(eshell-ls-archive (,@fg-magenta))
(eshell-ls-backup (,@fg-yellow))
(eshell-ls-clutter (,@fg-orange))
(eshell-ls-directory (,@fg-blue)) ; Directory
(eshell-ls-executable (,@fg-green))
(eshell-ls-missing (,@fg-red))
(eshell-ls-product (,@fg-yellow))
(eshell-ls-readonly (,@fg-base1))
(eshell-ls-special (,@fg-violet))
(eshell-ls-symlink (,@fg-cyan))
(eshell-ls-unreadable (,@fg-base00))
(eshell-prompt (,@fmt-bold ,@fg-green))
;; font-lock
(font-lock-builtin-face (,@fmt-none ,@fg-green)) ; Statement
(font-lock-comment-face (,@fmt-ital ,@fg-base01)) ; Comment
(font-lock-constant-face (,@fmt-none ,@fg-cyan)) ; Constant
(font-lock-function-name-face ; Identifier
(,@fmt-none ,@fg-blue))
(font-lock-keyword-face (,@fmt-none ,@fg-green)) ; Statement
(font-lock-string-face (,@fmt-none ,@fg-cyan)) ; Constant
(font-lock-type-face (,@fmt-none ,@fg-yellow)) ; Type
(font-lock-variable-name-face ; Identifier
(,@fmt-none ,@fg-blue))
(font-lock-warning-face (,@fmt-bold ,@fg-red)) ; Error
(font-lock-doc-face (,@fmt-ital ,@fg-base01)) ; Comment
(font-lock-doc-string-face ; Comment (XEmacs-only)
(,@fmt-ital ,@fg-base01))
(font-lock-color-constant-face (,@fmt-none ,@fg-green))
(font-lock-comment-delimiter-face ; Comment
(,@fmt-ital ,@fg-base01))
(font-lock-preprocessor-face (,@fmt-none ,@fg-orange)) ; PreProc
(font-lock-reference-face (,@fmt-none ,@fg-cyan))
(font-lock-negation-char-face (,@fmt-none ,@fg-red))
(font-lock-other-type-face (,@fmt-ital ,@fg-blue))
(font-lock-regexp-grouping-construct (,@fmt-none ,@fg-orange))
(font-lock-special-keyword-face (,@fmt-none ,@fg-red)) ; Special
(font-lock-exit-face (,@fmt-none ,@fg-red))
(font-lock-other-emphasized-face (,@fmt-bldi ,@fg-violet))
(font-lock-regexp-grouping-backslash (,@fmt-none ,@fg-yellow))
;; info
(info-xref (,@fmt-undr ,@fg-blue))
(info-xref-visited (,@fg-magenta :inherit info-xref))
;; org
(org-hide (,@fg-base03))
(org-todo (,@fmt-bold ,@fg-base03 ,@bg-red))
(org-done (,@fmt-bold ,@fg-green))
(org-todo-kwd-face (,@fg-red ,@bg-base03))
(org-done-kwd-face (,@fg-green ,@bg-base03))
(org-project-kwd-face (,@fg-violet ,@bg-base03))
(org-waiting-kwd-face (,@fg-orange ,@bg-base03))
(org-someday-kwd-face (,@fg-blue ,@bg-base03))
(org-started-kwd-face (,@fg-yellow ,@bg-base03))
(org-cancelled-kwd-face (,@fg-green ,@bg-base03))
(org-delegated-kwd-face (,@fg-cyan ,@bg-base03))
;; table
(table-cell (,@fmt-none ,@fg-base0 ,@bg-back))
;; outline - pandocBlockQuoteLeader*
(outline-1 (,@fmt-none ,@fg-blue))
(outline-2 (,@fmt-none ,@fg-cyan))
(outline-3 (,@fmt-none ,@fg-yellow))
(outline-4 (,@fmt-none ,@fg-red))
(outline-5 (,@fmt-none ,@fg-base0))
(outline-6 (,@fmt-none ,@fg-base01))
(outline-7 (,@fmt-none ,@fg-orange))
(outline-8 (,@fmt-none ,@fg-violet))
;; show-paren - MatchParen
(show-paren-match (,@fmt-bold ,@fg-cyan ,@bg-base02))
(show-paren-mismatch (,@fmt-bold ,@fg-red ,@bg-base01))
;; speedbar
;; (speedbar-button-face (,@fmt-none ,@fg-base1))
(speedbar-button-face
(,@fg-base1 ,@bg-base02
:box (:line-width 2 :style released-button)))
(speedbar-directory-face (,@fmt-none ,@fg-blue))
(speedbar-file-face (,@fmt-none ,@fg-green))
;; (speedbar-highlight-face (,@bg-base02))
(speedbar-highlight-face
(,@fmt-revr ,@fg-base1 ,@bg-base02
:inherit speedbar-button-face))
;; (speedbar-selected-face (,@fmt-undr ,@fg-yellow))
(speedbar-selected-face (,@fmt-none ,@bg-base02 ,@fg-green))
(speedbar-separator-face (,@fmt-stnd))
(speedbar-tag-face (,@fmt-none ,@fg-blue))
;; widgets
(widget-field
(,@fg-base1 ,@bg-base02 :box (:line-width 1 :color base2)
:inherit default))
(widget-single-line-field (:inherit widget-field))
;; extra modules
;; -------------
;; bm visual bookmarks
(bm-fringe-face (,@bg-orange ,@fg-base03))
(bm-fringe-persistent-face (,@bg-blue ,@fg-base03))
;; Flymake
(flymake-errline (,@fmt-revr ,@fg-red ,@bg-back)) ; ErrorMsg
(flymake-warnline (,@fmt-bold ,@fg-red ,@bg-back)) ; WarningMsg
;; column-marker
(column-marker-1 (,@bg-base01))
(column-marker-2 (,@bg-cyan))
(column-marker-3 (,@bg-violet))
;; jabber
(jabber-activity-face (,@fmt-bold ,@fg-red))
(jabber-activity-personal-face (,@fmt-bold ,@fg-blue))
(jabber-chat-error (,@fmt-bold ,@fg-red))
(jabber-chat-prompt-foreign (,@fmt-bold ,@fg-red))
(jabber-chat-prompt-local (,@fmt-bold ,@fg-blue))
(jabber-chat-prompt-system (,@fmt-bold ,@fg-green))
(jabber-chat-text-foreign (,@fg-base1))
(jabber-chat-text-local (,@fg-base0))
(jabber-chat-rare-time-face (,@fmt-undr ,@fg-green))
(jabber-roster-user-away (,@fmt-ital ,@fg-green))
(jabber-roster-user-chatty (,@fmt-bold ,@fg-orange))
(jabber-roster-user-dnd (,@fmt-ital ,@fg-red))
(jabber-roster-user-error (:weight light :slant italic ,@fg-red))
(jabber-roster-user-offline (,@fg-base01))
(jabber-roster-user-online (,@fmt-bold ,@fg-blue))
(jabber-roster-user-xa (,@fmt-ital ,@fg-magenta))
;; git-gutter
(git-gutter:modified (,@fg-violet))
(git-gutter:added (,@fg-green))
(git-gutter:deleted (,@fg-red))
;; gnus - these are taken from mutt, not VIM
(gnus-cite-1 (,@fmt-none ,@fg-blue)) ; quoted
(gnus-cite-2 (,@fmt-none ,@fg-cyan)) ; quoted1
(gnus-cite-3 (,@fmt-none ,@fg-yellow)) ; quoted2
(gnus-cite-4 (,@fmt-none ,@fg-red)) ; quoted3
(gnus-cite-5 (,@fmt-none ,@fg-orange)) ; quoted4
(gnus-cite-6 (,@fmt-none ,@fg-violet))
(gnus-cite-7 (,@fmt-none ,@fg-green))
(gnus-cite-8 (,@fmt-none ,@fg-magenta))
(gnus-cite-9 (,@fmt-none ,@fg-base00))
(gnus-cite-10 (,@fmt-none ,@fg-base01))
(gnus-cite-11 (,@fmt-none ,@fg-base02))
(gnus-group-mail-1 (,@fmt-bold ,@fg-base3))
(gnus-group-mail-1-empty (,@fg-base3))
(gnus-group-mail-2 (,@fmt-bold ,@fg-base2))
(gnus-group-mail-2-empty (,@fg-base2))
(gnus-group-mail-3 (,@fmt-bold ,@fg-magenta))
(gnus-group-mail-3-empty (,@fg-magenta))
(gnus-group-mail-low (,@fmt-bold ,@fg-base00))
(gnus-group-mail-low-empty (,@fg-base00))
(gnus-group-news-1 (,@fmt-bold ,@fg-base1))
(gnus-group-news-1-empty (,@fg-base1))
(gnus-group-news-2 (,@fmt-bold ,@fg-blue))
(gnus-group-news-2-empty (,@fg-blue))
(gnus-group-news-low (,@fmt-bold ,@fg-violet))
(gnus-group-news-low-empty (,@fg-violet))
(gnus-emphasis-highlight-words ; highlight
(,@fmt-none ,fg-yellow))
(gnus-header-content (,@fmt-none ,@fg-base01)) ; hdrdefault
(gnus-header-from (,@fmt-none ,@fg-base00)) ; header ^From
(gnus-header-name (,@fmt-none ,@fg-base01)) ; hdrdefault
(gnus-header-newsgroups (,@fmt-none ,@fg-base02)) ; hdrdefault
(gnus-header-subject (,@fmt-none ,@fg-blue)) ; header ^Subject
(gnus-server-agent (,@fmt-bold ,@fg-base3))
(gnus-server-closed (,@fmt-ital ,@fg-base1))
(gnus-server-denied (,@fmt-bold ,@fg-base2))
(gnus-server-offline (,@fmt-bold ,@fg-green))
(gnus-server-opened (,@fmt-bold ,@fg-cyan))
(gnus-signature (,@fmt-none ,@fg-base01)) ; signature
(gnus-splash (,@fg-base2))
(gnus-summary-cancelled ; deleted messages
(,@fmt-none ,@fg-red))
(gnus-summary-high-ancient
(,@fmt-bold :inherit gnus-summary-normal-ancient))
(gnus-summary-high-read
(,@fmt-bold :inherit gnus-summary-normal-read))
(gnus-summary-high-ticked
(,@fmt-bold :inherit gnus-summary-normal-ticked))
(gnus-summary-high-undownloaded
(,@fmt-bold :inherit gnus-summary-normal-undownloaded))
(gnus-summary-high-unread
(,@fmt-bold :inherit gnus-summary-normal-unread))
(gnus-summary-low-ancient
(,@fmt-ital :inherit gnus-summary-normal-ancient))
(gnus-summary-low-read
(,@fmt-ital :inherit gnus-summary-normal-ancient))
(gnus-summary-low-unread
(,@fmt-ital :inherit gnus-summary-normal-unread))
(gnus-summary-low-ticked
(,@fmt-ital :inherit gnus-summary-normal-ancient))
(gnus-summary-low-undownloaded
(,@fmt-ital :inherit gnus-summary-normal-ancient))
(gnus-summary-normal-ancient ; old messages
(,@fmt-none ,@fg-blue))
(gnus-summary-normal-read ; read messages
(,@fmt-none ,@fg-base01))
(gnus-summary-normal-ticked (,@fmt-none ,@fg-red)) ; flagged
(gnus-summary-normal-undownloaded (,@fmt-none ,@fg-base2))
(gnus-summary-normal-unread ; unread messages
(,@fmt-none ,@fg-blue))
(gnus-summary-selected ; indicator
(,@fmt-none ,@fg-base03 ,@bg-yellow))
;; Message
(message-mml (,@fg-blue))
(message-cited-text (,@fg-base2))
(message-separator (,@fg-base3))
(message-header-xheader (,@fg-violet))
(message-header-name (,@fg-cyan))
(message-header-other (,@fg-red))
(message-header-newsgroups (,@fmt-bldi ,@fg-yellow))
(message-header-subject (,@fg-base00))
(message-header-cc (,@fmt-bold ,@fg-green))
(message-header-to (,@fmt-bold ,@fg-base1))
;; minimap
(minimap-active-region-background (,@bg-base02))
(minimap-semantic-function-face (,bg-base3))
(minimap-semantic-type-face (,bg-base3))
(minimap-semantic-variable-face (,bg-base3))
;; parenface
(paren-face (,@fg-base01)) ; NB: local, dont commit
(parenthesis (,@fg-base01)) ; NB: local, dont commit
;; rainbow-delimiters
(rainbow-delimiters-depth-1-face (,@fg-cyan))
(rainbow-delimiters-depth-2-face (,@fg-yellow))
(rainbow-delimiters-depth-3-face (,@fg-blue))
(rainbow-delimiters-depth-4-face (,@fg-red))
(rainbow-delimiters-depth-5-face (,@fg-green))
(rainbow-delimiters-depth-6-face (,@fg-blue))
(rainbow-delimiters-depth-7-face (,@fg-orange))
(rainbow-delimiters-depth-8-face (,@fg-magenta))
(rainbow-delimiters-depth-9-face (,@fg-base0))
;; slime
(slime-error-face (,@fmt-revr ,@fg-red)) ; ErrorMsg
(slime-note-face (,@fg-yellow))
(slime-repl-inputted-output-face (,@fg-red))
(slime-repl-output-mouseover-face (:box (:color base3)))
(slime-style-warning-face (,@fmt-bold ,@fg-orange))
(slime-warning-face (,@fmt-bold ,@fg-red)) ; WarningMsg
;; whitespace
(whitespace-empty (,@fg-red))
(whitespace-hspace (,@fg-orange))
(whitespace-indentation (,@fg-base02))
(whitespace-space (,@fg-base02))
(whitespace-space-after-tab (,@fg-cyan))
(whitespace-space-before-tab (,@fmt-bold ,@fg-red))
(whitespace-tab (,@fg-base02))
(whitespace-trailing (,@fmt-bold ,@fg-red ,@bg-base02))
(whitespace-highlight-face (,@fg-red ,@bg-blue))
(whitespace-line (,@fg-magenta))
;; rcirc
(rcirc-my-nick (,@fg-blue))
(rcirc-nick-in-message (,@fg-orange))
(rcirc-other-nick (,@fg-green))
(rcirc-prompt (,@fg-yellow))
(rcirc-bright-nick (,@fg-magenta))
(rcirc-server (,@fg-base1))
(rcirc-timestamp (,@fg-base01))
;;font-latex
(font-latex-warning-face (,@fg-red))
(font-latex-sectioning-5-face (,@fg-violet))
;;flyspell
(flyspell-incorrect (,@fg-red))
(flyspell-duplicate (,@fg-yellow))
;;ansi-term
(term-color-black (,@fg-base02))
(term-color-red (,@fg-red))
(term-color-green (,@fg-green))
(term-color-yellow (,@fg-yellow))
(term-color-blue (,@fg-blue))
(term-color-magenta (,@fg-magenta))
(term-color-cyan (,@fg-cyan))
(term-color-white (,@fg-base00)))))))
;;;###autoload
(when (boundp 'custom-theme-load-path)
(add-to-list 'custom-theme-load-path
(file-name-as-directory (file-name-directory load-file-name))))
(defmacro create-solarized-theme (name description color-definitions)
`(progn
(deftheme ,name ,description)
(apply 'custom-theme-set-faces
',name ,color-definitions)
(provide-theme ',name)))
(provide 'solarized-definitions)

View File

@ -2,4 +2,10 @@
(locate-file "solarized-definitions.el" custom-theme-load-path
'("c" "")))
(create-solarized-theme light)
(create-solarized-theme solarized-light
(concat "This theme is obsolete since 2013-05-01;
use `solarized' instead.
"
solarized-description)
(solarized-color-definitions))

6
solarized-theme.el Normal file
View File

@ -0,0 +1,6 @@
(require 'solarized-definitions
(locate-file "solarized-definitions.el" custom-theme-load-path
'("c" "")))
(create-solarized-theme solarized
solarized-description (solarized-color-definitions))