• Stars
    star
    1,154
  • Rank 40,425 (Top 0.8 %)
  • Language
    Emacs Lisp
  • License
    MIT License
  • Created over 13 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Emacs highlighting using Ethan Schoonover’s Solarized color scheme

Solarized Colorscheme for Emacs

Stolen from Ethan Schoonover [email protected] by Greg Pfeil [email protected]

Visit the Solarized homepage

See the Solarized homepage for screenshots, details and colorscheme versions for Vim, Mutt, popular terminal emulators and other applications.

Screenshots

solarized dark

Downloads

If you have come across this colorscheme via the Emacs-only repository on github, see the link above to the Solarized homepage or visit the main Solarized repository.

The Emacs-only repository is kept in sync with the main Solarized repository. Issues, bug reports, changelogs that are not specific to the Emacs implementation should be submitted to the main Solarized repository.

Installation & Usage

Emacs 24

  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.

all versions

To switch between the light and dark variations of Solarized, set the frame’s 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). If you're in a terminal, you must also set the terminal parameter with (set-terminal-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:

(add-hook 'after-make-frame-functions
          (lambda (frame)
            (solarized-update-background-mode
             (if (display-graphic-p frame) 'light 'dark)
             (list frame))))

Similarly, you can switch between background modes with M-x solarized-toggle-background-mode.

If you use Emacs Plus, you can keep the mode in sync with the OS with

(add-hook 'ns-system-appearance-change-functions
          #'solarized-update-background-mode)

IMPORTANT NOTE FOR TERMINAL USERS:

If you are going to use Solarized in Terminal mode (i.e. not in a GUI version like Cocoa or X11 Emacs), please please please consider setting your terminal emulator's colorscheme to use the Solarized palette. The Solarized repository includes palettes for some popular terminal emulator as well as Xdefaults; or you can download them from the official Solarized homepage. If you use this emacs color theme without having changed your emulator's palette, you will need to configure Solarized to degrade its colorscheme to a set compatible with the terminal's default limited 256 color palette (whereas by using the terminal's 16 ANSI color values, you would see the correct, specific values for the Solarized palette).

Again, I recommend just changing your terminal colors to Solarized values either manually or via one of the many terminal schemes available for import.

Advanced Configuration

Solarized will work out of the box with just the instructions specified above but does include several variables that can be customized.

variable name            default   optional
--------------------------------------------
solarized-termcolors =   16    |   256
solarized-degrade    =   nil   |   t
solarized-bold       =   t     |   nil
solarized-underline  =   t     |   nil
solarized-italic     =   t     |   nil
solarized-contrast   =   normal|   high, low
solarized-visibility =   normal|   high, low
solarized-broken-srgb=   nil   |   t (see details for Mac behavior)
--------------------------------------------

Option Details

  • solarized-termcolors

    Some 256-color terminals also allow you to set and use the standard 16 colors in addition to the fixed 256-color palette. This option only applies when your terminal is in 256-color mode. If set to 16 (the default) it will try to use the exact Solarized colors (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). If it’s set to 256, then Solarized 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.

  • solarized-degrade

    For test purposes only; in GUI mode, this forces Solarized to use the 256 degraded color mode to test the approximate color values for accuracy.

  • solarized-bold | solarized-underline | solarized-italic

    If you wish to stop Solarized from displaying bold, underlined or italicized typefaces, simply set the appropriate variable to nil.

  • solarized-contrast

    Stick with normal! It's been carefully tested. Setting this option to high or low does use the same Solarized palette but simply shifts some values up or down in order to expand or compress the tonal range displayed.

  • solarized-visibility

    Special characters such as trailing whitespace, tabs, newlines, when displayed using :set list can be set to one of three levels depending on your needs. Default value is normal with high and low options.

  • solarized-broken-srgb

    Emacs bug #8402 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

I have attempted to modularize the creation of Emacs colorschemes in this script and, while it could be refactored further, it should be a good foundation for the creation of any color scheme. By simply changing the values in the solarized-colors table in solarized-definitions.el and testing in a GUI Emacs, you can rapidly prototype new colorschemes without diving into the weeds of line-item editing each syntax highlight declaration.

The Values

L*a*b values are canonical (White D65, Reference D50), other values are matched in sRGB space.

SOLARIZED HEX     16/8 TERMCOL  XTERM/HEX   L*A*B      RGB         HSB
--------- ------- ---- -------  ----------- ---------- ----------- -----------
base03    #002b36  8/4 brblack  234 #1c1c1c 15 -12 -12   0  43  54 193 100  21
base02    #073642  0/4 black    235 #262626 20 -12 -12   7  54  66 192  90  26
base01    #586e75 10/7 brgreen  240 #585858 45 -07 -07  88 110 117 194  25  46
base00    #657b83 11/7 bryellow 241 #626262 50 -07 -07 101 123 131 195  23  51
base0     #839496 12/6 brblue   244 #808080 60 -06 -03 131 148 150 186  13  59
base1     #93a1a1 14/4 brcyan   245 #8a8a8a 65 -05 -02 147 161 161 180   9  63
base2     #eee8d5  7/7 white    254 #e4e4e4 92 -00  10 238 232 213  44  11  93
base3     #fdf6e3 15/7 brwhite  230 #ffffd7 97  00  10 253 246 227  44  10  99
yellow    #b58900  3/3 yellow   136 #af8700 60  10  65 181 137   0  45 100  71
orange    #cb4b16  9/3 brred    166 #d75f00 50  50  55 203  75  22  18  89  80
red       #dc322f  1/1 red      160 #d70000 50  65  45 220  50  47   1  79  86
magenta   #d33682  5/5 magenta  125 #af005f 50  65 -05 211  54 130 331  74  83
violet    #6c71c4 13/5 brmagenta 61 #5f5faf 50  15 -45 108 113 196 237  45  77
blue      #268bd2  4/4 blue      33 #0087ff 55 -10 -45  38 139 210 205  82  82
cyan      #2aa198  6/6 cyan      37 #00afaf 60 -35 -05  42 161 152 175  74  63
green     #859900  2/2 green     64 #5f8700 60 -20  65 133 153   0  68 100  60

Bug Reporting

Here are some things to keep in mind when submitting a bug report:

  • include the output of M-x version in your report,
  • include the names of Emacs faces that you have a problem with (M-: (face-at-point) and M-x describe-face will tell you the name of the face at point),
  • include the output of M-: (display-color-cells) (that lets us know which set of colors your Emacs is using),
  • screenshots are very helpful (before and after if you made a change),
  • if you’re using a terminal, the name of the terminal and (if you can find out) the number of colors the terminal app is using,
  • also if you’re using a terminal, try running Emacs in GUI mode, and see if the problem exists there (if it does, report the bug that way, if not, just mention that it’s a terminal-only bug),
  • it’s very helpful (but not expected) if you can compare it to a similar situation in VIM (especially if you know the VIM highlight name or have a screenshot), and
  • M-x customize-apropos-faces can help you find all the relevant faces if you are submitting faces for a mode.

More Repositories

1

recursion-scheme-talk

A talk on using recursion schemes in FP.
213
star
2

CL-LLVM

CFFI bindings for LLVM
Shell
97
star
3

quid-pro-quo

A contract programming library for Common Lisp in the style of Eiffel’s Design by Contract ™.
Common Lisp
92
star
4

yaya

Yet another yet another recursion scheme library in Haskell.
Haskell
86
star
5

external-program

A portable Common Lisp library for running external programs from within Lisp.
Common Lisp
68
star
6

dada

A total recursion scheme library for Dhall
Nix
64
star
7

caterwaul

Wailing into the primordial ooze of category theory
Dhall
54
star
8

YACC-is-dead

YACC is dead for Common Lisp (based on http://arxiv.org/abs/1010.5023)
Common Lisp
39
star
9

dualizer

Delete half (minus ε) of your Haskell code!
Haskell
29
star
10

Iaia

A recursion scheme library for Idris.
Nix
24
star
11

dredd

Automatic type class law checking.
Haskell
24
star
12

category-parametric-talk

Talks on category-parametric programming.
Scala
22
star
13

haskerwaul

Category theory concepts in type classes and instances.
Haskell
19
star
14

compiling-anything-to-categories

a talk about and sample project for the [Categorifier](https://github.org/con-kitty/categorifier) GHC plugin.
Haskell
19
star
15

method-combination-utilities

Various utilities to make use and creation of custom method combinations easier.
Common Lisp
18
star
16

Kilns

An experimental programming language based on the kell calculus.
Common Lisp
17
star
17

project-manager

Home Manager, but for repos.
Nix
14
star
18

Idris-CPDT

A translation of Certified Programming with Dependent Types to Idris.
Idris
13
star
19

dhall-dhall

Implementation of Dhall in Dhall
Dhall
12
star
20

cheshire

This library tries to push categorical representations to their limit in Scala. I don’t expect it to be practical.
Scala
11
star
21

LOOM

Lisp: Object-Oriented and Modular
Common Lisp
9
star
22

cl-google-charts

Common Lisp API to Google Charts
Common Lisp
8
star
23

no-recursion

A GHC plugin to remove support for recursion
Nix
8
star
24

cl-dispatch

CFFI bindings to Grand Central Dispatch.
Common Lisp
7
star
25

cl-glpk

Common Lisp interface to GLPK (GNU Linear Programming Kit). This is a fork of Kai Kaminski’s original (http://common-lisp.net/project/cl-glpk/).
Common Lisp
6
star
26

sellout.github.com

my coding blog
CSS
5
star
27

cl-gravatar

Common Lisp interface to access Gravatar images and profiles.
Common Lisp
5
star
28

math-extensions

A collection of new functions as well as integration of additional number systems (E.G., quaternion and surreal numbers) with the existing system.
Common Lisp
4
star
29

http-response-handler

Generates conditions from HTTP error responses.
Common Lisp
4
star
30

dhall-path

Well-typed path manipulation for Dhall
Dhall
4
star
31

Opt-Check

Keep track of optimizations and easily benchmark them.
Common Lisp
4
star
32

sparklines

A Common Lisp library for generating sparkline images. The current state is just me persisting old stuff. Probably not worth using in its current state.
Common Lisp
3
star
33

partial-isomorphisms

A Common Lisp library for defining reversible functions.
Common Lisp
3
star
34

beautiful-failures

a Haskell library that helps you keep your users as happy as possible when things go wrong
Haskell
3
star
35

nix-package.el

A package.el-like for managing Nix packages.
Emacs Lisp
3
star
36

computational-model-zoo

Mostly a wiki for keeping track of various computational models and their relationships.
3
star
37

non-consing-variants

A tiny utility library for Common Lisp to make it easy to switch between consing and non-consing functions for optimization.
Common Lisp
3
star
38

dotfiles

Sellout’s general configuration
Nix
2
star
39

dog

compositional document generator
2
star
40

cl-fitbit

Common Lisp interface to the fitbit API.
Common Lisp
2
star
41

stumpwm

A Maximalist window manager
Common Lisp
2
star
42

hall

The corridor connecting Dhall and Haskell
Dhall
2
star
43

dhall-numerics

Some algebraic numeric types and operations.
Shell
2
star
44

flaky

Templates for dev environments
Nix
1
star
45

dhall-functor

Functor in Dhall along with functions that generalise to Functor
1
star
46

dependent-dhall-experiments

Dhall
1
star
47

data-structure-zoo

A wiki to try to keep track of various data structures and ADTs.
1
star
48

sellout

public profile
1
star
49

knots

miscellaneous knot-related things.
1
star
50

polydactyl

A reimplementation of Typelevel’s Cats taking advantage of kind polymorphism.
1
star
51

NCLB

A new(?) and simple kind of literate programming system.
Common Lisp
1
star
52

qualified-constraints

A different way of thinking about newtypes.
1
star
53

conf-questions

Web app for collecting, triaging, and answering questions from an audience
Haskell
1
star
54

straw

Compiling to SNARKs
Haskell
1
star
55

bradix

Braille-radix numbers
Emacs Lisp
1
star
56

slamengine-old

The engine for SlamData
Scala
1
star
57

pandoc-ansi

ANSI writers for Pandoc
Haskell
1
star