Skip to content

Instantly share code, notes, and snippets.

@sellout
Created March 26, 2011 13:48
Show Gist options
  • Save sellout/888286 to your computer and use it in GitHub Desktop.
Save sellout/888286 to your computer and use it in GitHub Desktop.
First step of a Solarized color theme for Emacs (http://ethanschoonover.com/solarized)
(eval-when-compile
(require 'color-theme))
(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 "#d30102")
(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))
;; basic faces
(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 ,base01))))
(secondary-selection ((t (:background ,base02))))
(trailing-whitespace ((t (:foreground ,red :inverse-video t))))
(vertical-border ((t (:foreground ,base0))))
;; customize faces
(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-variable-tag ((t (:foreground ,orange :bold t))))
;; diff faces
(diff-added ((t (:foreground ,green :inverse-video t))))
(diff-changed ((t (:foreground ,yellow :inverse-video t))))
(diff-removed ((t (:foreground ,red :inverse-video t))))
;; font-lock faces
(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 (:foregound ,yellow))))
(font-lock-variable-name-face ((t (:foregound ,blue))))
(font-lock-warning-face ((t (:foreground ,red :bold t))))))))
(defun color-theme-solarized-dark () (color-theme-solarized 'dark))
(defun color-theme-solarized-light () (color-theme-solarized 'light))
@sellout
Copy link
Author

sellout commented Apr 3, 2011

Check out https://github.com/sellout/solarized for a better version. I think the cursor should be fixed there.

@mbudisic
Copy link

I checked out the theme from other repository. I still have the cursor invisible when starting Emacs. However, if I re-apply the theme (even if it's the same one used in .emacs), the cursor appears. Commenting out line 36 (cursor ... ), does the trick, but switching :foreground and :background colors also works. (I'm using Emacs 24.0.50 fyi).

Bottom line, it's not a huge issue, theme works great otherwise, so thanks for your work!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment