Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

This adds in @josh's 256-color changes (for some reason, I couldn't m…

…anage to pull any changes from the repo). It also rearranges things a bit to keep all the color definitions in a table.
  • Loading branch information...
commit c51b75d5f5744d1157fc93f58112a116e94e44f7 1 parent c8e9f41
Greg Pfeil sellout authored
Showing with 190 additions and 161 deletions.
  1. +190 −161 color-theme-solarized.el
351 color-theme-solarized.el
View
@@ -13,171 +13,200 @@
(eval-when-compile
(require 'color-theme))
+(defvar color-theme-solarized-colors
+ ;; name ideal 256
+ '((base03 "#002b36" "#1c1c1c")
+ (base02 "#073642" "#262626")
+ (base01 "#586e75" "#4e4e4e")
+ (base00 "#657b83" "#585858")
+ (base0 "#839496" "#808080")
+ (base1 "#93a1a1" "#8a8a8a")
+ (base2 "#eee8d5" "#d7d7af")
+ (base3 "#fdf6e3" "#ffffd7")
+ (yellow "#b58900" "#af8700")
+ (orange "#cb4b16" "#d75f00")
+ (red "#dc322f" "#af0000")
+ (magenta "#d33682" "#af005f")
+ (violet "#6c71c4" "#5f5faf")
+ (blue "#268bd2" "#0087ff")
+ (cyan "#2aa198" "#00afaf")
+ (green "#859900" "#5f8700"))
+ "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 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? ")
- (let ((base03 "#002b36")
- (base02 "#073642")
- (base01 "#586e75")
- (base00 "#657b83")
- (base0 "#839496")
- (base1 "#93a1a1")
- (base2 "#eee8d5")
- (base3 "#fdf6e3")
- (yellow "#b58900")
- (orange "#cb4b16")
- (red "#dc322f")
- (magenta "#d33682")
- (violet "#6c71c4")
- (blue "#268bd2")
- (cyan "#2aa198")
- (green "#859900"))
- (when (eq 'light mode)
- (rotatef base03 base3)
- (rotatef base02 base2)
- (rotatef base01 base1)
- (rotatef base00 base0))
- (color-theme-install
- `(color-theme-solarized
- ((foreground-color . ,base0)
- (background-color . ,base03)
- (background-mode . ,mode)
- (cursor-color . ,base0))
- ;; basic
- (default ((t (:foreground ,base0))))
- (cursor ((t (:foreground ,base0 :background ,base03 :inverse-video t))))
- (escape-glyph-face ((t (:foreground ,red))))
- (fringe ((t (:foreground ,base01 :background ,base02))))
- (header-line ((t (:foreground ,base0 :background ,base2))))
- (highlight ((t (:background ,base02))))
- (isearch ((t (:foreground ,yellow :inverse-video t))))
- (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 :bold t))))
- (compilation-warning ((t (:foreground ,orange :bold t))))
- ;; 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 :bold t))))
- (custom-link ((t (:foreground ,violet))))
- (custom-state ((t (:foreground ,green))))
- (custom-variable-tag ((t (:foreground ,orange :bold t))))
- ;; 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 :bold t))))
- (diff-refine-change ((t (:background ,base1))))
- ;; emacs-wiki
- (emacs-wiki-bad-link-face ((t (:foreground ,red :underline t))))
- (emacs-wiki-link-face ((t (:foreground ,blue :underline t))))
- (emacs-wiki-verbatim-face ((t (:foreground ,base00 :underline t))))
- ;; font-lock
- (font-lock-builtin-face ((t (:foreground ,green))))
- (font-lock-comment-face ((t (:foreground ,base01 :italic t))))
- (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 :bold t))))
- (font-lock-doc-face ((t (:foreground ,cyan :italic t))))
- ;; info
- (info-xref ((t (:foreground ,blue :underline t))))
- (info-xref-visited ((t (:inherit info-xref :foreground ,magenta))))
- ;; org
- (org-hide ((t (:foreground ,base03))))
- (org-todo ((t (:foreground ,red :bold t))))
- (org-done ((t (:foreground ,green :bold t))))
- ;; show-paren
- (show-paren-match-face ((t (:background ,cyan :foreground ,base3))))
- (show-paren-mismatch-face ((t (:background ,red :foreground ,base3))))
- ;; 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 :bold t))))
- (gnus-group-mail-1-empty ((t (:foreground ,base3))))
- (gnus-group-mail-2 ((t (:foreground ,base2 :bold t))))
- (gnus-group-mail-2-empty ((t (:foreground ,base2))))
- (gnus-group-mail-3 ((t (:foreground ,magenta :bold t))))
- (gnus-group-mail-3-empty ((t (:foreground ,magenta))))
- (gnus-group-mail-low ((t (:foreground ,base00 :bold t))))
- (gnus-group-mail-low-empty ((t (:foreground ,base00))))
- (gnus-group-news-1 ((t (:foreground ,base1 :bold t))))
- (gnus-group-news-1-empty ((t (:foreground ,base1))))
- (gnus-group-news-2 ((t (:foreground ,blue :bold t))))
- (gnus-group-news-2-empty ((t (:foreground ,blue))))
- (gnus-group-news-low ((t (:foreground ,violet :bold t))))
- (gnus-group-news-low-empty ((t (:foreground ,violet))))
- (gnus-header-content ((t (:foreground ,cyan :italic t))))
- (gnus-header-from ((t (:foreground ,base2))))
- (gnus-header-name ((t (:foreground ,blue))))
- (gnus-header-newsgroups ((t (:foreground ,green :italic t))))
- (gnus-header-subject ((t (:foreground ,base1))))
- (gnus-server-agent ((t (:foreground ,base3 :bold t))))
- (gnus-server-closed ((t (:foreground ,base1 :italic t))))
- (gnus-server-denied ((t (:foreground ,base2 :bold t))))
- (gnus-server-offline ((t (:foreground ,green :bold t))))
- (gnus-server-opened ((t (:foreground ,cyan :bold t))))
- (gnus-splash ((t (:foreground ,base2))))
- (gnus-summary-high-ancient ((t (:foreground ,magenta :bold t))))
- (gnus-summary-high-read ((t (:foreground ,base1 :bold t))))
- (gnus-summary-high-ticked ((t (:foreground ,base3 :bold t))))
- (gnus-summary-high-undownloaded ((t (:foreground ,base2 :bold t))))
- (gnus-summary-low-ancient ((t (:foreground ,magenta :italic t))))
- (gnus-summary-low-read ((t (:foreground ,base1 :italic t))))
- (gnus-summary-low-ticked ((t (:foreground ,base3 :italic t))))
- (gnus-summary-low-undownloaded ((t (:foreground ,base2 :italic t))))
- (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))))
- ;; 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 :bold t :italic t))))
- (message-header-subject ((t (:foreground ,base00))))
- (message-header-cc ((t (:foreground ,green :bold t))))
- (message-header-to ((t (:foreground ,base1 :bold t))))))))
+ (flet ((find-color (name)
+ (let ((index (if (or (<= (display-color-cells) 256)) 2 1)))
+ (nth index (assoc name color-theme-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)))
+ (when (eq 'light mode)
+ (rotatef base03 base3)
+ (rotatef base02 base2)
+ (rotatef base01 base1)
+ (rotatef base00 base0))
+ (color-theme-install
+ `(color-theme-solarized
+ ((foreground-color . ,base0)
+ (background-color . ,base03)
+ (background-mode . ,mode)
+ (cursor-color . ,base0))
+ ;; basic
+ (default ((t (:foreground ,base0))))
+ (cursor
+ ((t (:foreground ,base0 :background ,base03 :inverse-video t))))
+ (escape-glyph-face ((t (:foreground ,red))))
+ (fringe ((t (:foreground ,base01 :background ,base02))))
+ (header-line ((t (:foreground ,base0 :background ,base2))))
+ (highlight ((t (:background ,base02))))
+ (isearch ((t (:foreground ,yellow :inverse-video t))))
+ (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 :bold t))))
+ (compilation-warning ((t (:foreground ,orange :bold t))))
+ ;; 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 :bold t))))
+ (custom-link ((t (:foreground ,violet))))
+ (custom-state ((t (:foreground ,green))))
+ (custom-variable-tag ((t (:foreground ,orange :bold t))))
+ ;; 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 :bold t))))
+ (diff-refine-change ((t (:background ,base1))))
+ ;; emacs-wiki
+ (emacs-wiki-bad-link-face ((t (:foreground ,red :underline t))))
+ (emacs-wiki-link-face ((t (:foreground ,blue :underline t))))
+ (emacs-wiki-verbatim-face ((t (:foreground ,base00 :underline t))))
+ ;; font-lock
+ (font-lock-builtin-face ((t (:foreground ,green))))
+ (font-lock-comment-face ((t (:foreground ,base01 :italic t))))
+ (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 :bold t))))
+ (font-lock-doc-face ((t (:foreground ,cyan :italic t))))
+ ;; info
+ (info-xref ((t (:foreground ,blue :underline t))))
+ (info-xref-visited ((t (:inherit info-xref :foreground ,magenta))))
+ ;; org
+ (org-hide ((t (:foreground ,base03))))
+ (org-todo ((t (:foreground ,red :bold t))))
+ (org-done ((t (:foreground ,green :bold t))))
+ ;; show-paren
+ (show-paren-match-face ((t (:background ,cyan :foreground ,base3))))
+ (show-paren-mismatch-face ((t (:background ,red :foreground ,base3))))
+ ;; 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 :bold t))))
+ (gnus-group-mail-1-empty ((t (:foreground ,base3))))
+ (gnus-group-mail-2 ((t (:foreground ,base2 :bold t))))
+ (gnus-group-mail-2-empty ((t (:foreground ,base2))))
+ (gnus-group-mail-3 ((t (:foreground ,magenta :bold t))))
+ (gnus-group-mail-3-empty ((t (:foreground ,magenta))))
+ (gnus-group-mail-low ((t (:foreground ,base00 :bold t))))
+ (gnus-group-mail-low-empty ((t (:foreground ,base00))))
+ (gnus-group-news-1 ((t (:foreground ,base1 :bold t))))
+ (gnus-group-news-1-empty ((t (:foreground ,base1))))
+ (gnus-group-news-2 ((t (:foreground ,blue :bold t))))
+ (gnus-group-news-2-empty ((t (:foreground ,blue))))
+ (gnus-group-news-low ((t (:foreground ,violet :bold t))))
+ (gnus-group-news-low-empty ((t (:foreground ,violet))))
+ (gnus-header-content ((t (:foreground ,cyan :italic t))))
+ (gnus-header-from ((t (:foreground ,base2))))
+ (gnus-header-name ((t (:foreground ,blue))))
+ (gnus-header-newsgroups ((t (:foreground ,green :italic t))))
+ (gnus-header-subject ((t (:foreground ,base1))))
+ (gnus-server-agent ((t (:foreground ,base3 :bold t))))
+ (gnus-server-closed ((t (:foreground ,base1 :italic t))))
+ (gnus-server-denied ((t (:foreground ,base2 :bold t))))
+ (gnus-server-offline ((t (:foreground ,green :bold t))))
+ (gnus-server-opened ((t (:foreground ,cyan :bold t))))
+ (gnus-splash ((t (:foreground ,base2))))
+ (gnus-summary-high-ancient ((t (:foreground ,magenta :bold t))))
+ (gnus-summary-high-read ((t (:foreground ,base1 :bold t))))
+ (gnus-summary-high-ticked ((t (:foreground ,base3 :bold t))))
+ (gnus-summary-high-undownloaded ((t (:foreground ,base2 :bold t))))
+ (gnus-summary-low-ancient ((t (:foreground ,magenta :italic t))))
+ (gnus-summary-low-read ((t (:foreground ,base1 :italic t))))
+ (gnus-summary-low-ticked ((t (:foreground ,base3 :italic t))))
+ (gnus-summary-low-undownloaded ((t (:foreground ,base2 :italic t))))
+ (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))))
+ ;; 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 :bold t :italic t))))
+ (message-header-subject ((t (:foreground ,base00))))
+ (message-header-cc ((t (:foreground ,green :bold t))))
+ (message-header-to ((t (:foreground ,base1 :bold t)))))))))
(defun color-theme-solarized-dark ()
(interactive)
Please sign in to comment.
Something went wrong with that request. Please try again.