Unify light and dark themes.

This also improves emacsclient support, since each theme can use its own color depth and dark/light mode.
This commit is contained in:
Greg Pfeil 2013-03-07 14:00:07 -07:00
parent 553ce32da3
commit 2452a929fc
6 changed files with 490 additions and 505 deletions

View File

@ -34,7 +34,7 @@ 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.
2. Add `(load-theme 'solarized t)` to your Emacs init file.
3. Reload the init file, or restart Emacs.
### [color-theme] \(pre-Emacs 24\)
@ -43,7 +43,22 @@ Installation & Usage
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]`.
4. Use the usual [color-theme] mechanism to select one of the Solarized themes, or `M-x color-theme-solarized`.
### 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 +73,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 +84,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 +95,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

View File

@ -23,36 +23,16 @@
(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))))
;;;###autoload
(defun color-theme-solarized-dark ()
(interactive)
(color-theme-solarized 'dark))
;;;###autoload
(defun color-theme-solarized-light ()
(interactive)
(color-theme-solarized 'light))
`(color-theme-solarized () () ,@(solarized-color-definitions))))
(add-to-list 'color-themes
`(color-theme-solarized-light
"Solarized Light"
,solarized-description))
(add-to-list 'color-themes
`(color-theme-solarized-dark
"Solarized Dark"
`(color-theme-solarized
"Solarized"
,solarized-description))
(provide 'color-theme-solarized)

View File

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

View File

@ -73,456 +73,464 @@ 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.")
(defun solarized-color-definitions (mode)
(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))
(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))
(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
(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 :color ,base2)
:inherit default))))
(widget-single-line-field ((t (:inherit widget-field))))
;; extra modules
;; -------------
;; 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))))
;; 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
;; 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))))
;;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)))))
(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))
((foreground-color . ,(when (<= 16 (display-color-cells)) base0))
(background-color . ,back)
(background-mode . ,mode)
(cursor-color . ,(when (<= 16 (display-color-cells))
base0)))))))))
(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)))))
(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))))
(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))
(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))
(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)))
(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))
(menu (,@fg-base0 ,@bg-base02))
(minibuffer-prompt (,@fmt-bold ,@fg-cyan)) ; Question
(mode-line (,@fg-base1 ,@bg-base02 ,@fmt-revbb :box nil)) ; StatusLine
(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
`((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)))
;; FIXME: use these non-bold versions for TTY frames
`((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 (,@fmt-none ,@fg-blue)) ; Identifier
(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 (,@fmt-ital ,@fg-base01)) ; Comment
(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))
;; speedbar
(speedbar-button-face (,@fmt-none ,@fg-base1))
(speedbar-directory-face (,@fmt-none ,@fg-orange))
(speedbar-file-face (,@fmt-none ,@fg-green))
(speedbar-highlight-face (,@bg-base02))
(speedbar-selected-face (,@fmt-undr ,@fg-yellow))
(speedbar-separator-face (,@fmt-stnd))
(speedbar-tag-face (,@fmt-none ,@fg-blue))
;; show-paren - MatchParen
(show-paren-match (,@fmt-bold ,@fg-cyan ,@bg-base02))
(show-paren-mismatch (,@fmt-bold ,@fg-red ,@bg-base01))
;; widgets
(widget-field
(,@fg-base1 ,@bg-base02 :box (:line-width 1 :color base2)
:inherit default))
(widget-single-line-field (:inherit widget-field))
;; extra modules
;; -------------
;; 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))
;; 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 (,@fmt-none ,fg-yellow)) ; highlight
(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 (,@fmt-none ,@fg-red)) ; deleted messages
(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 (,@fmt-none ,@fg-blue)) ; old messages
(gnus-summary-normal-read (,@fmt-none ,@fg-base01)) ; read messages
(gnus-summary-normal-ticked (,@fmt-none ,@fg-red)) ; flagged
(gnus-summary-normal-undownloaded (,@fmt-none ,@fg-base2))
(gnus-summary-normal-unread (,@fmt-none ,@fg-blue)) ; unread messages
(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))
;; 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
;; speedbar
(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
(,@fmt-revr ,@fg-base1 ,@bg-base02
:inherit speedbar-button-face))
(speedbar-selected-face (,@fmt-none ,@bg-base02 ,@fg-green))
(speedbar-separator-face (,@fmt-stnd))
(speedbar-tag-face (,@fmt-none ,@fg-blue))
;; 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 ,@bg-base03))
;; 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)))))))
;;;###autoload
(when (boundp 'custom-theme-load-path)

View File

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

13
solarized-theme.el Normal file
View File

@ -0,0 +1,13 @@
(require 'solarized-definitions
(locate-file "solarized-definitions.el" custom-theme-load-path
'("c" "")))
(defmacro create-solarized-theme ()
(let ((theme-name 'solarized))
`(progn
(deftheme ,theme-name ,solarized-description)
(apply 'custom-theme-set-faces
',theme-name ',(solarized-color-definitions))
(provide-theme ',theme-name))))
(create-solarized-theme)