~elais/shaolin-emacs-archive

7ac7ace5fa2206d30622f7b73822145cd26a9f47 — Elais Player 4 years ago 257c816
add the latest to shaolin

Added a bunch of stuff I watned to try out
A etc/custom.el => etc/custom.el +13 -0
@@ 0,0 1,13 @@
(custom-set-variables
 ;; custom-set-variables was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(custom-safe-themes
   '("801a567c87755fe65d0484cb2bded31a4c5bb24fd1fe0ed11e6c02254017acb2" default)))
(custom-set-faces
 ;; custom-set-faces was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 )

M guix.scm => guix.scm +4 -307
@@ 1,313 1,10 @@
(use-modules (gnu)
	     (guix packages)
	     (gnu packages emacs-xyz)
	     (guix build-system emacs)
	     (guix download)
             ((guix licenses) #:prefix license:))

(define-public emacs-flymake
  (package
    (name "emacs-flymake")
    (version "1.0.8")
    (source
      (origin
        (method url-fetch)
        (uri (string-append
               "https://elpa.gnu.org/packages/flymake-"
               version
               ".el"))
        (sha256
          (base32
            "1hqxrqb227v4ncjjqx8im3c4mhg8w5yjbz9hpfcm5x8xnr2yd6bp"))))
    (build-system emacs-build-system)
    (home-page
      "http://elpa.gnu.org/packages/flymake.html")
    (synopsis
      "A universal on-the-fly syntax checker")
    (description
      "Flymake is a minor Emacs mode performing on-the-fly syntax checks.

Flymake collects diagnostic information for multiple sources,
called backends, and visually annotates the relevant portions in
the buffer.

This file contains the UI for displaying and interacting with the
results produced by these backends, as well as entry points for
backends to hook on to.

The main interactive entry point is the `flymake-mode' minor mode,
which periodically and automatically initiates checks as the user
is editing the buffer.  The variables `flymake-no-changes-timeout',
`flymake-start-on-flymake-mode' give finer control over the events
triggering a check, as does the interactive command  `flymake-start',
which immediately starts a check.

Shortly after each check, a summary of collected diagnostics should
appear in the mode-line.  If it doesn't, there might not be a
suitable Flymake backend for the current buffer's major mode, in
which case Flymake will indicate this in the mode-line.  The
indicator will be `!' (exclamation mark), if all the configured
backends errored (or decided to disable themselves) and `?'
(question mark) if no backends were even configured.

For programmers interested in writing a new Flymake backend, the
docstring of `flymake-diagnostic-functions', the Flymake manual,
and the code of existing backends are probably a good starting
point.

The user wishing to customize the appearance of error types should
set properties on the symbols associated with each diagnostic type.
The standard diagnostic symbols are `:error', `:warning' and
`:note' (though a specific backend may define and use more).  The
following properties can be set:

* `flymake-bitmap', an image displayed in the fringe according to
`flymake-fringe-indicator-position'.  The value actually follows
the syntax of `flymake-error-bitmap' (which see).  It is overridden
by any `before-string' overlay property.

* `flymake-severity', a non-negative integer specifying the
diagnostic's severity.  The higher, the more serious.  If the
overlay property `priority' is not specified, `severity' is used to
set it and help sort overlapping overlays.

* `flymake-overlay-control', an alist ((OVPROP . VALUE) ...) of
further properties used to affect the appearance of Flymake
annotations.  With the exception of `category' and `evaporate',
these properties are applied directly to the created overlay.  See
Info Node `(elisp)Overlay Properties'.

* `flymake-category', a symbol whose property list is considered a
default for missing values of any other properties.  This is useful
to backend authors when creating new diagnostic types that differ
from an existing type by only a few properties.  The category
symbols `flymake-error', `flymake-warning' and `flymake-note' make
good candidates for values of this property.

For instance, to omit the fringe bitmap displayed for the standard
`:note' type, set its `flymake-bitmap' property to nil:

  (put :note 'flymake-bitmap nil)

To change the face for `:note' type, add a `face' entry to its
`flymake-overlay-control' property.

  (push '(face . highlight) (get :note 'flymake-overlay-control))

If you push another alist entry in front, it overrides the previous
one.  So this effectively removes the face from `:note'
diagnostics.

  (push '(face . nil) (get :note 'flymake-overlay-control))

To erase customizations and go back to the original look for
`:note' types:

  (cl-remf (symbol-plist :note) 'flymake-overlay-control)
  (cl-remf (symbol-plist :note) 'flymake-bitmap)")
    (license license:gpl3+)))

(define-public emacs-jsonrpc
  (package
    (name "emacs-jsonrpc")
    (version "1.0.11")
    (source
      (origin
        (method url-fetch)
        (uri (string-append
               "https://elpa.gnu.org/packages/jsonrpc-"
               version
               ".el"))
        (sha256
          (base32
            "04cy1mqd6y8k5lcpg076szjk9av9345mmsnzzh6vgbcw3dcgbr23"))))
    (build-system emacs-build-system)
    (home-page
      "http://elpa.gnu.org/packages/jsonrpc.html")
    (synopsis "JSON-RPC library")
    (description
      "This library implements the JSONRPC 2.0 specification as described
in http://www.jsonrpc.org/.  As the name suggests, JSONRPC is a
generic Remote Procedure Call protocol designed around JSON
objects.  To learn how to write JSONRPC programs with this library,
see Info node `(elisp)JSONRPC'.\"

This library was originally extracted from eglot.el, an Emacs LSP
client, which you should see for an example usage.")
    (license license:gpl3+)))

(define-public emacs-eglot
  (package
    (name "emacs-eglot")
    (version "1.6")
    (source
      (origin
        (method url-fetch)
        (uri (string-append
               "https://elpa.gnu.org/packages/eglot-"
               version
               ".tar"))
        (sha256
          (base32
            "15hd6sx7qrpvlvhwwkcgdiki8pswwf4mm7hkm0xvznskfcp44spx"))))
    (build-system emacs-build-system)
    (propagated-inputs
      `(("emacs-jsonrpc" ,emacs-jsonrpc)
        ("emacs-flymake" ,emacs-flymake)))
    (home-page "https://github.com/joaotavora/eglot")
    (synopsis
      "Client for Language Server Protocol (LSP) servers")
    (description
      "Simply M-x eglot should be enough to get you started, but here's a
little info (see the accompanying README.md or the URL for more).

M-x eglot starts a server via a shell-command guessed from
`eglot-server-programs', using the current major-mode (for whatever
language you're programming in) as a hint.  If it can't guess, it
prompts you in the mini-buffer for these things.  Actually, the
server needen't be locally started: you can connect to a running
server via TCP by entering a <host:port> syntax.

Anyway, if the connection is successful, you should see an `eglot'
indicator pop up in your mode-line.  More importantly, this means
current *and future* file buffers of that major mode *inside your
current project* automatically become \\\"managed\\\" by the LSP
server, i.e.  information about their contents is exchanged
periodically to provide enhanced code analysis via
`xref-find-definitions', `flymake-mode', `eldoc-mode',
`completion-at-point', among others.

To \"unmanage\" these buffers, shutdown the server with M-x
eglot-shutdown.

You can also do:

  (add-hook 'foo-mode-hook 'eglot-ensure)

To attempt to start an eglot session automatically everytime a
foo-mode buffer is visited.")
    (license license:gpl3+)))

(define-public emacs-company-prescient
  (package
    (name "emacs-company-prescient")
    (version "20200404.1550")
    (source
      (origin
        (method url-fetch)
        (uri (string-append
               "https://melpa.org/packages/company-prescient-"
               version
               ".el"))
        (sha256
          (base32
            "098k5akqig2bh1r70240lyzwsv8zj8xzn9ldxc01h9hz29cslgkd"))))
    (build-system emacs-build-system)
    (propagated-inputs
      `(("emacs-prescient" ,emacs-prescient)
        ("emacs-company" ,emacs-company)))
    (home-page
      "https://github.com/raxod502/prescient.el")
    (synopsis "prescient.el + Company")
    (description
      "company-prescient.el provides an interface for using prescient.el
to sort Company completions. To enable its functionality, turn on
`company-prescient-mode' in your init-file or interactively.

Note that company-prescient.el does not change the filtering
behavior of Company. This is because that can't be done without
updating each Company backend individually.

For more information, see https://github.com/raxod502/prescient.el.
")
    (license #f)))

(define-public emacs-selectrum-prescient
  (package
    (name "emacs-selectrum-prescient")
    (version "20200404.1550")
    (source
      (origin
        (method url-fetch)
        (uri (string-append
               "https://melpa.org/packages/selectrum-prescient-"
               version
               ".el"))
        (sha256
          (base32
            "155bsilm5db16a47vpnvylwy031rwsfzvyw76mxsc343aggiv16g"))))
    (build-system emacs-build-system)
    (propagated-inputs
      `(("emacs-prescient" ,emacs-prescient)
        ("emacs-selectrum" ,emacs-selectrum)))
    (home-page
      "https://github.com/raxod502/prescient.el")
    (synopsis "Selectrum integration")
    (description
      "selectrum-prescient.el provides an interface for using prescient.el
to sort and filter candidates in Selectrum menus. To enable its
functionality, turn on `selectrum-prescient-mode' in your init-file
or interactively.

For more information, see https://github.com/raxod502/prescient.el.
")
    (license #f)))

(define-public emacs-hyperbole
  (package
    (name "emacs-hyperbole")
    (version "7.0.6")
    (source
      (origin
        (method url-fetch)
        (uri (string-append
               "https://elpa.gnu.org/packages/hyperbole-"
               version
               ".tar"))
        (sha256
          (base32
            "08gi4v76s53nfmn3s0qcxc3zii0pspjfd6ry7jq1kgm3z34x8hab"))))
    (build-system emacs-build-system)
    (home-page
      "http://www.gnu.org/software/hyperbole")
    (synopsis
      "GNU Hyperbole: The Everyday Hypertextual Information Manager")
    (description "way too long")
    (license license:gpl3+)))
    
(define-public emacs-boon
  (package
    (name "emacs-boon")
    (version "20200507.1851")
    (source
      (origin
        (method url-fetch)
        (uri (string-append
               "https://melpa.org/packages/boon-"
               version
               ".tar"))
        (sha256
          (base32
            "0yxfgm94zlykgqaqi2yvrg3l5d327cxzcgxkw83b30xilw10nyk4"))))
    (build-system emacs-build-system)
    (propagated-inputs
      `(("emacs-expand-region" ,emacs-expand-region)
        ("emacs-dash" ,emacs-dash)
        ("emacs-multiple-cursors" ,emacs-multiple-cursors)
	("emacs-spaceline" ,emacs-spaceline)))
    (home-page "unspecified")
    (synopsis "Ergonomic Command Mode for Emacs.")
    (description
      "Boon brings modal editing capabilities to Emacs and...

- It tries to be as ergonomic as possible.
- It remains lightweight (~300 loc for its core.)
- It attempts to integrate with Emacs as smoothly as possible
")
    (license #f)))
(use-modules (elais packages emacs-xyz)
	     (guix profiles)
	     (gnu packages emacs-xyz))

(packages->manifest
 (list emacs-use-package emacs-tao-theme emacs-modus-operandi-theme
   emacs-spacemacs-theme emacs-edwina
   ;; ghost-eating-techniques
   emacs-yasnippet emacs-yasnippet-snippets emacs-no-littering
   ;; shaolin-movement

M init.el => init.el +15 -8
@@ 19,15 19,22 @@
;;
;;; Code:

(eval-when-compile
  (add-to-list 'load-path "/home/elais/.guix-extra-profiles/shaolin-emacs/shaolin-emacs/share/emacs/site-lisp")
  (require 'use-package))

(add-to-list 'load-path (expand-file-name "lisp" user-emacs-directory))

(use-package modus-operandi-theme
  :config (load-theme 'modus-operandi t))
(eval-when-compile 
 (add-to-list 'load-path (expand-file-name
                          ".emacs-profile/share/emacs/site-lisp"
                          user-emacs-directory))
 (add-to-list 'load-path (expand-file-name "lisp" user-emacs-directory))
 (add-to-list 'custom-theme-load-path  (expand-file-name
                                        "themes"
                                        user-emacs-directory))
 (require 'use-package))

(use-package tao-theme
  :init
  (setq tao-theme-use-sepia nil)
  :config
  (load-theme 'white t))
  
;; Credentials  
(setq user-name "Elais Player"
      user-mail-address "elais@fastmail.com")

A lisp/shao-windows.el => lisp/shao-windows.el +13 -0
@@ 0,0 1,13 @@
;;; shao-windows.el --- window management -*- lexica-binding: t -*-

;;; Commentary:

;; Manual window management sucks, we're adding some automation

;;; Code:

(use-package edwina
  :config
  (setq display-buffer-base-action '(display-buffer-below-selected))
  (edwina-setup-dwm-keys)
  (edwina-mode +1))

A themes/paper-theme.el => themes/paper-theme.el +351 -0
@@ 0,0 1,351 @@
;;; paper-theme.el --- A minimal Emacs colour theme. -*- lexical-binding: t; -*-
;; Copyright (C) 2015, 2018, 2019 Göktuğ Kayaalp
;;
;; Author: Göktuğ Kayaalp
;; Keywords: theme paper
;; Package-Version: 1.0.1
;; Package-Requires: ((emacs "24"))
;; URL: https://dev.gkayaalp.com/elisp/index.html#paper
;;
;; Permission  is  hereby  granted,  free of  charge,  to  any  person
;; obtaining  a copy  of  this software  and associated  documentation
;; files   (the  "Software"),   to  deal   in  the   Software  without
;; restriction, including without limitation  the rights to use, copy,
;; modify, merge, publish, distribute,  sublicense, and/or sell copies
;; of the  Software, and  to permit  persons to  whom the  Software is
;; furnished to do so, subject to the following conditions:
;;
;; The  above copyright  notice and  this permission  notice shall  be
;; included in all copies or substantial portions of the Software.
;;
;; THE SOFTWARE  IS PROVIDED  "AS IS", WITHOUT  WARRANTY OF  ANY KIND,
;; EXPRESS OR IMPLIED, INCLUDING BUT  NOT LIMITED TO THE WARRANTIES OF
;; MERCHANTABILITY,   FITNESS    FOR   A   PARTICULAR    PURPOSE   AND
;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
;; BE LIABLE FOR ANY CLAIM, DAMAGES  OR OTHER LIABILITY, WHETHER IN AN
;; ACTION OF CONTRACT,  TORT OR OTHERWISE, ARISING FROM, OUT  OF OR IN
;; CONNECTION WITH  THE SOFTWARE OR THE  USE OR OTHER DEALINGS  IN THE
;; SOFTWARE.
;;
;;; Commentary:
;;
;; Paper is a  little, minimal emacs theme that is  meant to be simple
;; and consistent.
;;
;; It  was first  intended  to resemble  the look  of  paper, but  has
;; diverged from  that objective.   Still, though,  I keep  calling it
;; Paper, as I like that name.
;;
;; Paper  uses a  small colour  palette  over all  the elements.   Org
;; headings  are  specially  treated  with a  palette  of  equidistant
;; colours.  The colours  and heading font sizes  are calculated using
;; base and factor values which can be edited.  See source.
;;
;; It's most adapted for ELisp-Org users, as I'm one such user, though
;; it  works fine  with Markdown,  Textile, Python,  JavaScript, Html,
;; Diff, Magit, etc.
;;
;;; Installation:
;;
;; Install it into a directory that's in the `custom-theme-load-path'.
;; I recommend  that you  put that directory  also in  `load-path', so
;; that you can `require' the  `paper-theme'.  Then adapt this snippet
;; to your configuration.
;;
;;   ;; Not necessary, but silences flycheck errors for referencing free
;;   ;; variables.
;;   (require 'paper-theme)
;;   ;; It's not necessary to modify these variables, they all have sane
;;   ;; defaults.
;;   (setf paper-paper-colour 'paper-parchment ; Custom background.
;;         paper-tint-factor 45)      ; Tint factor for org-level-* faces
;;   ;; Activate the theme.
;;   (load-theme 'paper t)
;;
;;; Customisation:
;;
;; It is possible to modify the  base font size and the scaling factor
;; for `org-level-faces' via  the variables `paper-base-font-size' and
;; `paper-font-factor' respectively.
;;
;; The factor  for org-level-*  colours are also  configurable, adjust
;; the variable `paper-tint-factor'.
;;
;; Various background colours  are provided, see the  docstring of the
;; variable `paper-paper-colour'  in order to  find out how  to switch
;; them.   You  can add  your  custom  colour for  background  without
;; modifying this module:
;;
;;   (push (list 'my-bgcolour "#000000") paper-colours-alist)
;;   (setf paper-paper-colour 'my-bgcolour)
;;
;; The following snippet will modify org-level-* faces so that initial
;; stars in  org headings are  hidden and  a Sans-serif font  is used.
;; Because  the combination  of heading  font sizes  and colours  make
;; levels  obvious, it  may be  considered superfluous  to have  stars
;; indicating depth:
;;
;;   (setq org-hide-leading-stars nil)
;;   (set-face-attribute
;;    'org-hide nil
;;    :height 0.1 :weight 'light :width 'extracondensed)
;;   (dolist (face org-level-faces)
;;     (set-face-attribute
;;      face nil
;;      :family "Sans Serif"))
;;
;;; Code:
;;
(require 'cl-lib)

;;; Code from hexrgb.el:
;; On 25 Dec 2018 I was informed that Melpa was about to drop support
;; for Emacswiki packages, which includes hexrgb.el too.  This means
;; that I needed to remove the dependency on the package, so I include
;; here the functions needed by paper-theme from that package.  Below,
;; I reproduce information on copyright and some other things from the
;; version I have of it:

;; Copyright (C) 2004-2015, Drew Adams, all rights reserved.
;; Last-Updated: Wed Jul  8 18:32:29 2015 (-0700)
;;           By: dradams
;;     Update #: 985
;; URL: http://www.emacswiki.org/hexrgb.el

;; This program is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 2, or (at your option)
;; any later version.

;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;; GNU General Public License for more details.

;; You should have received a copy of the GNU General Public License
;; along with this program; see the file COPYING.  If not, write to
;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth
;; Floor, Boston, MA 02110-1301, USA.

(if (featurep 'hexrgb)
    (require 'hexrgb)
  (progn
    ;; Originally, I used the code from `int-to-hex-string' in `float.el'.
    ;; This version is thanks to Juri Linkov <juri@jurta.org>.
    ;;
    (defun hexrgb-int-to-hex (int &optional nb-digits)
      "Convert integer arg INT to a string of NB-DIGITS hexadecimal digits.
If INT is too large to be represented with NB-DIGITS, then the result
is truncated from the left.  So, for example, INT=256 and NB-DIGITS=2
returns \"00\", since the hex equivalent of 256 decimal is 100, which
is more than 2 digits."
      (setq nb-digits  (or nb-digits 4))
      (substring (format (concat "%0" (int-to-string nb-digits) "X") int) (- nb-digits)))

    ;; From `hexl.el'.  This is the same as `hexl-hex-char-to-integer' defined there.
    (defun hexrgb-hex-char-to-integer (character)
      "Take a CHARACTER and return its value as if it were a hex digit."
      (if (and (>= character ?0) (<= character ?9))
          (- character ?0)
        (let ((ch  (logior character 32)))
          (if (and (>= ch ?a) (<= ch ?f))
              (- ch (- ?a 10))
            (error "Invalid hex digit `%c'" ch)))))

    (defun hexrgb-hex-to-int (hex)
      "Convert HEX string argument to an integer.
The characters of HEX must be hex characters."
      (let* ((factor  1)
             (len     (length hex))
             (indx    (1- len))
             (int     0))
        (while (>= indx 0)
          (setq int     (+ int (* factor (hexrgb-hex-char-to-integer (aref hex indx))))
                indx    (1- indx)
                factor  (* 16 factor)))
        int))

    (defun hexrgb-increment-hex (hex nb-digits increment &optional wrap-p)
      "Increment hexadecimal-digits string HEX by INCREMENT.
Only the first NB-DIGITS of HEX are used.
If optional arg WRAP-P is non-nil then the result wraps around zero.
  For example, with NB-DIGITS 3, incrementing \"fff\" by 1 causes it
  to wrap around to \"000\"."
      (let* ((int      (hexrgb-hex-to-int hex))
             (new-int  (+ increment int)))
        (if (or wrap-p
                (and (>= int 0)             ; Not too large for the machine.
                     (>= new-int 0)         ; For the case where increment < 0.
                     (<= (length (format (concat "%X") new-int)) nb-digits))) ; Not too long.
            (hexrgb-int-to-hex new-int nb-digits) ; Use incremented number.
          hex)))                            ; Don't increment.

    (defun hexrgb-increment-equal-rgb (hex nb-digits increment &optional wrap-p)
      "Increment each color component (r,g,b) of rgb string HEX by INCREMENT.
String HEX starts with \"#\".  Each color is NB-DIGITS hex digits long.
If optional arg WRAP-P is non-nil then the result wraps around zero.
  For example, with NB-DIGITS 3, incrementing \"#fffffffff\" by 1
  causes it to wrap around to \"#000000000\"."
      (concat
       "#"
       (hexrgb-increment-hex (substring hex 1 (1+ nb-digits)) nb-digits increment wrap-p)
       (hexrgb-increment-hex (substring hex (1+ nb-digits) (1+ (* nb-digits 2)))
                             nb-digits
                             increment
                             wrap-p)
       (hexrgb-increment-hex (substring hex (1+ (* nb-digits 2))) nb-digits increment wrap-p)))))

;;; Paper theme:
(deftheme paper
  "An Emacs colour theme that resembles the look of paper.")

(defvar paper-colours-alist
  '((text "#070A01")
    (paper-grey "#FAFAFA")
    (paper-old-dark "#F8ECC2")
    (paper-parchment "#F1F1D4")
    (paper-old-light "#F2EECB")
    (white "#EEEEEE")
    (magenta "#8C0D40")
    (pen "#000F55")
    (light-shadow "#D9DDD9"))
  "The colours used in Paper theme.
The alist of colours where for each pair p (car p) is a
symbol identifying the colour and (cdr p) is the string, the
hexedecimal notation of the colour (i.e. #RRGGBB where R, G and B
are hexedecimal digits).")

(defvar paper-paper-colour 'paper-grey
  "Which paper colour to use.
The variable `paper-colours-alist' contains a suit of colours
with prefix `paper-'.  This variable's value is supposed to be
set to one of those symbols to specify the colour used for
background.")

(defvar paper-use-varying-heights-for-org-title-headlines nil
  "Whether to use varying heights for Org headlines.")

(defvar paper-base-font-size 100
  "The base size for fonts.")

(defvar paper-font-factor 0.1
  "The font factor for calculating level fonts from base.")

(defvar paper-tint-factor 20
  "The factor for computing tints for org levels.")

(defun paper-colour (colour-identifier)
  "Get colour for COLOUR-IDENTIFIER."
  (cadr (assoc colour-identifier paper-colours-alist)))

(defun paper-colour-paper ()
  "Get the colour for paper.
See `paper-paper-colour' and `paper-colours-alist'."
  (paper-colour paper-paper-colour))

(defconst paper-normal-face
  `((t (:foreground ,(paper-colour 'text) :background ,(paper-colour-paper))))
  "The base colours of Paper theme.")

(defconst paper-inverse-face
  `((t (:foreground ,(paper-colour-paper) :background ,(paper-colour 'text))))
  "The inverse of base colours of Paper theme.")

(defconst paper-pen-face
  `((t (:foreground ,(paper-colour 'pen) :background ,(paper-colour-paper))))
  "Colour couple that resembles pen colour on paper.")

(defconst paper-light-shadow-face
  `((t (:foreground ,(paper-colour 'text) :background ,(paper-colour 'light-shadow))))
  "Colour couple that resembles a light shadow.")

(defconst paper-italicised-pen-face
  `((t (:foreground ,(paper-colour 'pen) :background ,(paper-colour-paper)
                    :slant italic)))
  "Colour couple that resembles pen colour on paper, italicised.")

(defconst paper-magenta-on-paper-face
  `((t (:foreground ,(paper-colour 'magenta) :background ,(paper-colour-paper)))))

(defun paper-tints (hex n &optional darken)
  "Compute equidistant tints of a given colour.
HEX is the hexedecimal RRGGBB string representation of the colour.
N is an integer denoting how many tints to compute.
If DARKEN is non-nil, compute darker tints, otherwise, lighter."
  (cl-loop
   for i from 0 to n
   collect (hexrgb-increment-equal-rgb
            hex 2
            (* i
               (funcall
                (if darken #'- #'identity)
                paper-tint-factor)))))

(defun paper--set-faces ()
  "Set up faces.

May be used to refresh after tweaking some variables."
  (eval
   (let* ((b paper-base-font-size)     ; base
          (f paper-font-factor)        ; factor
          (o "org-level-")
          (org-faces)
          (n 8)
          (tints (paper-tints (paper-colour 'magenta) n)))
     (dolist (n (number-sequence 1 n))
       (push
        `(quote
          (,(intern
             (concat o (number-to-string n)))
           ((t (:slant normal
                :weight light
                :foreground ,(pop tints)
                ,@(when paper-use-varying-heights-for-org-title-headlines
                    (list
                     :height
                     (truncate (+ b (- (* b (+ 1 f)) (* b (* f n))))))))))))
        org-faces))

     `(custom-theme-set-faces
       (quote paper)
       ;; === Frame ===
       (quote (default ,paper-normal-face))
       (quote (cursor ,paper-inverse-face))
       (quote (mode-line ((t (:foreground ,(paper-colour 'white)
                                          :background ,(paper-colour 'magenta)
                                          :box nil)))))
       (quote (mode-line-inactive ,paper-light-shadow-face))
       (quote (mode-line-highlight ((t (:foreground ,(paper-colour 'text)
                                                    :box nil)))))
       (quote (fringe ,paper-normal-face))
       (quote (region ((t (:background ,(paper-colour 'magenta)
                                       :foreground ,(paper-colour 'white))))))

       ;; === Syntax ===
       (quote (font-lock-builtin-face        ,paper-normal-face))
       (quote (font-lock-comment-face        ,paper-italicised-pen-face))
       (quote (font-lock-string-face         ,paper-pen-face))
       (quote (font-lock-function-name-face  ,paper-pen-face))
       (quote (font-lock-variable-name-face  ,paper-pen-face))
       (quote (font-lock-keyword-face        ,paper-magenta-on-paper-face))
       (quote (font-lock-type-face           ,paper-magenta-on-paper-face))
       (quote (font-lock-constant-face       ,paper-magenta-on-paper-face))
       (quote (font-lock-preprocessor-face   ,paper-magenta-on-paper-face))

       ;; === Org titles ===
       ,(when paper-use-varying-heights-for-org-title-headlines
          (quote (quote (org-tag ((t (:height 90 :weight light)))))))
       ,@org-faces))))

(paper--set-faces)

;;;###autoload
(and load-file-name
     (boundp 'custom-theme-load-path)
     (add-to-list 'custom-theme-load-path
                  (file-name-as-directory
                   (file-name-directory load-file-name))))

(provide 'paper-theme)
(provide-theme 'paper)
;;; paper-theme.el ends here

A themes/tao-theme.el => themes/tao-theme.el +1142 -0
@@ 0,0 1,1142 @@
;;; tao-theme.el --- Tao of EMACS grayscale color theme

;; Copyright © 2014 2015 2016 2017 Peter Kosov  <11111000000@email.com>

;; Author: Peter Kosov <11111000000@email.com>
;;
;; Contributors: Jasonm23 <jasonm23@gmail.com>, Steve Purcell (purcell), Jonas Bernoulli (tarsius), Guilherme G. (semente), Tanner Hobson (player1537), Syohei YOSHIDA (syohex), Thibault (thblt), Terje Larsen (terlar), Tang Xinfa (tangxinfa)
;;
;; Package-Requires: ((cl-lib "0.5"))
;;
;; URL: http://github.com/11111000000/tao-theme-emacs
;;
;; Version: 1.1.1

;; This program is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.

;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;; GNU General Public License for more details.

;; You should have received a copy of the GNU General Public License
;; along with this program.  If not, see <http://www.gnu.org/licenses/>.

;;; Commentary:
;;
;; Colors blind people’s eyes;
;;
;;         Lao Tzu - Tao Te Ching (Ch. 12	Sentence 1)
;;
;; This package provides two parametrized uncoloured color themes for Emacs: tao-yin and tao-yang.
;;
;; Default tao-theme-scale-fn is tao-theme-golden-scale, and produce following colors:
;;
;; #FCFCFC #FAFAFA #F6F6F6 #F1F1F1 #E8E8E8 #DADADA #C3C3C3 #9E9E9E #616161 #3C3C3C #252525 #171717 #0E0E0E #090909 #050505
;;
;; You can customize:
;;
;; tao-theme-scale-fn, that returns 16 2-digit numbers
;; tao-theme-scale-filter-fn, for edge filter
;; tao-theme-use-height, nil by default
;; 
;;; Code:

(require 'cl-lib)

(defgroup tao-theme nil
  "tao-theme customization options")

(defcustom tao-theme-use-height nil
  "Non-nil means tao-theme is allowed to customize height"
  :type 'boolean
  :group 'tao-theme)

(defcustom tao-theme-use-boxes t
  "Non-nil means tao-theme is allowed to use borders"
  :type 'boolean
  :group 'tao-theme)

(defcustom tao-theme-use-sepia t
  "Non-nil means tao-theme should use sepia tones for grayscale"
  :type 'boolean
  :group 'tao-theme)

(defcustom tao-theme-sepia-depth 10
  "The depth to use for the sepia scale if enabled"
  :type 'integer
  :group 'tao-theme)

(defcustom tao-theme-sepia-saturation 1.03
  "The saturation to use for the sepia scale if enabled"
  :type 'float
  :group 'tao-theme)

(defcustom tao-theme-scale-fn 'tao-theme-golden-scale
  "gen alist of two-digit numbers"
  :type 'function
  :group 'tao-theme)

(defun tao-theme-taiji-fn (scale)
  (mapcar (lambda (it) (- #xFF it)) scale))

(defun tao-theme-height (height)
  (if tao-theme-use-height
      height 1.0))

(defun tao-boxed (color)
  (if tao-theme-use-boxes
      `(:color ,color  :line-width 1) nil))


(defun tao-theme-colors-to-palette (colors)
  "Create palette of named colors from alist of colors"
  (cl-loop for value in colors
           count value into index
           collect (cons (concat "color-" (format "%d" index)) value)))

(defun tao-theme-scale-filter-fn (input-scale)
  "Scale filter function"
  (cl-remove-duplicates
   (cl-remove-if (lambda (it) (or (< it #x05) (> it #xFC)))
                 input-scale )))

(defun tao-theme-scale-to-palette (scale)
  "Create palette from scale"
  (tao-theme-colors-to-palette
   (if tao-theme-use-sepia
       (tao-theme-scale-to-colors-sepia
        (tao-theme-scale-filter-fn scale))
     (tao-theme-scale-to-colors
      (tao-theme-scale-filter-fn scale)))))

(defun tao-theme-golden-scale ()
  "Generate a golden mean based greyscale gradient."
  (let ((golden-scale nil)
        (phi (/ (+ 1 (sqrt 5)) 2)))
    (dotimes (n 16)
      (let* ((alpha (round (/ #xFF (expt phi (+ n 1))))))
        (push alpha golden-scale)
        (push (- #xFF alpha) golden-scale)))
    (sort golden-scale '<)))

(defun tao-theme-scale-to-colors (scale)	
  "Create grayscale from colors alist"	  
  (mapcar (lambda (it) (format "#%02X%02X%02X" it it it)) scale))

;; TODO refactor that into two `tao-theme-scale-to-colors` and `tao-sepia-filter`
(defun tao-theme-scale-to-colors-sepia (scale)
  "Create grayscale from colors alist"
  (mapcar (lambda (it)            
            (let ((r (+ it (* tao-theme-sepia-depth 1.8)))
                  (g (+ it (* tao-theme-sepia-depth 1.5)))
                  (b (* it tao-theme-sepia-saturation)))                  
              (format "#%02X%02X%02X"
                      (if (> r 255) 255 r)
                      (if (> g 255) 255 g)
                      (if (> b 255) 255 b))))
          scale))


(defun tao-theme-yin-palette ()
  "Generate a dark version of the golden gradient alist."  
  (tao-theme-scale-to-palette (funcall tao-theme-scale-fn)))

(defun tao-theme-yang-palette ()
  "Generate a light version of the golden gradient alist."
  (tao-theme-scale-to-palette (tao-theme-taiji-fn (funcall tao-theme-scale-fn))))

(defmacro tao-with-color-variables (tao-colors &rest body)
  "`let' bind all colors defined in TAO-COLORS around BODY.
Also bind `class' to ((class color) (min-colors 89))."
  (declare (indent 0))
  `(let ((class '((class color) (min-colors 89)))
         ,@(mapcar (lambda (c)
                     (list (intern (car c)) (cdr c)))
                   (funcall tao-colors)))
     ,@body))

(defun tao-apply-custom-theme (theme-name)
  (custom-theme-set-faces
   theme-name
   ;; Built-in
   `(button                                           ((t (:underline t))))
   `(link                                             ((t (:foreground ,color-13 :underline t :weight bold))))
   `(link-visited                                     ((t (:foreground ,color-11 :underline t :weight normal))))
   `(default                                          ((t (:foreground ,color-10 :background ,color-4 ))))
   `(italic                                          ((t (:italic t ))))
   `(variable-pitch                                   ((t (:foreground ,color-9 :height ,(tao-theme-height 1.0) :variable-pitch t))))   
   `(parenthesis                                      ((t (:foreground ,color-7))))
   `(hl-paren-face                                    ((t (:foreground ,color-12 :background ,color-4))))
   `(cursor                                           ((t (:foreground ,color-13 :background ,color-14))))
   `(escape-glyph                                     ((t (:foreground ,color-13 :bold t))))
   `(header-line                                      ((t (:inherit mode-line))))
   `(fringe                                           ((t (:foreground ,color-7 :weight bold))))
   `(highlight                                        ((t (:background ,color-4 :foreground ,color-14))))
   `(success                                          ((t (:foreground ,color-9 :weight bold))))
   `(warning                                          ((t (:background ,color-6 :foreground ,color-11 :weight bold))))
   `(error                                            ((t (:foreground ,color-14 :background ,color-5 :weight bold))))   
   ;; compilation
   `(compilation-column-face                          ((t (:foreground ,color-13))))
   `(compilation-enter-directory-face                 ((t (:foreground ,color-9))))
   `(compilation-error-face                           ((t (:inherit error-face ))))
   `(compilation-face                                 ((t (:foreground ,color-13))))
   `(compilation-info-face                            ((t (:foreground ,color-11))))
   `(compilation-info                                 ((t (:foreground ,color-13 :underline t))))
   `(compilation-leave-directory-face                 ((t (:foreground ,color-9))))
   `(compilation-line-face                            ((t (:foreground ,color-13))))
   `(compilation-line-number                          ((t (:foreground ,color-13))))
   `(compilation-message-face                         ((t (:foreground ,color-11))))
   `(compilation-warning-face                         ((t (:foreground ,color-11 :weight bold :underline t))))
   `(compilation-mode-line-exit                       ((t (:foreground ,color-11 :weight bold))))
   `(compilation-mode-line-fail                       ((t (:foreground ,color-10 :weight bold))))
   `(compilation-mode-line-run                        ((t (:foreground ,color-13 :weight bold))))
   ;; grep
   `(grep-context-face                                ((t (:foreground ,color-13))))
   `(grep-error-face                                  ((t (:foreground ,color-9 :weight bold :underline t))))
   `(grep-hit-face                                    ((t (:foreground ,color-11))))
   `(grep-match-face                                  ((t (:foreground ,color-11 :weight bold))))
   `(match                                            ((t (:background ,color-3 :foreground ,color-11 :weight bold))))
   ;; make
   `(makefile-space                                   ((t (:background ,color-4))))
   `(makefile-targets                                   ((t (:underline t))))
   `(makefile-shell                                   ((t (:slant italic))))
   ;; isearch
   `(isearch                                          ((t (:foreground ,color-11 :weight bold :background ,color-6))))
   `(isearch-fail                                     ((t (:foreground ,color-13 :background ,color-7))))
   `(lazy-highlight                                   ((t (:foreground ,color-11 :weight bold :background ,color-5))))
   `(menu                                             ((t (:foreground ,color-13 :background ,color-4))))
   `(minibuffer-prompt                                ((t (:foreground ,color-1 :background ,color-9 :inherit fixed-pitch ))))
   `(mode-line                                        ((,class (:foreground ,color-12 :background ,color-1 :box nil :height ,(tao-theme-height 1)))))
   `(mode-line-inactive                               ((t (:foreground ,color-9 :background ,color-6 :box nil :height ,(tao-theme-height 1)))))
   `(mode-line-buffer-id                              ((t (:foreground ,color-14 :weight bold))))
   `(region                                           ((,class (:background ,color-9 :foreground ,color-3)) (t :inverse-video t)))
   `(secondary-selection                              ((t (:background ,color-5))))
   `(cua-rectangle                                    ((t (:background ,color-4))))
   `(trailing-whitespace                              ((t (:background ,color-10))))
   `(vertical-border                                  ((t (:foreground ,color-7 :background ,color-4))))
   ;; font lock
   `(font-lock-builtin-face                           ((t (:foreground ,color-13 :italic t ))))
   `(font-lock-keyword-face                           ((t (:foreground ,color-14 ))))
   `(font-lock-comment-face                           ((t (:foreground ,color-8 :italic t :variable-pitch t ))))
   `(font-lock-comment-delimiter-face                 ((t (:foreground ,color-9))))
   `(font-lock-constant-face                          ((t (:foreground ,color-9 :weight bold))))
   `(font-lock-doc-face                               ((t (:foreground ,color-8 :weight normal :italic t))))
   `(font-lock-function-name-face                     ((t (:foreground ,color-10 :box ,(tao-boxed color-8) ))))
   `(font-lock-variable-name-face                     ((t (:foreground ,color-11))))
   `(font-lock-negation-char-face                     ((t (:foreground ,color-14))))
   `(font-lock-preprocessor-face                      ((t (:foreground ,color-11))))
   `(font-lock-regexp-grouping-construct              ((t (:foreground ,color-13 :weight bold))))
   `(font-lock-regexp-grouping-backslash              ((t (:foreground ,color-9 :weight bold))))
   `(font-lock-string-face                            ((t (:foreground ,color-9 :italic t))))
   `(font-lock-type-face                              ((t (:foreground ,color-9 :italic t :bold t))))
   `(font-lock-warning-face                           ((t (:inherit warning))))
   `(c-annotation-face                                ((t (:inherit font-lock-constant-face))))
   ;; newsticker
   `(newsticker-date-face                             ((t (:foreground ,color-13))))
   `(newsticker-default-face                          ((t (:foreground ,color-13))))
   `(newsticker-enclosure-face                        ((t (:foreground ,color-12))))
   `(newsticker-extra-face                            ((t (:foreground ,color-7 :height ,(tao-theme-height 0.8)))))
   `(newsticker-feed-face                             ((t (:foreground ,color-13))))
   `(newsticker-immortal-item-face                    ((t (:foreground ,color-9))))
   `(newsticker-new-item-face                         ((t (:foreground ,color-11))))
   `(newstickerphone-obsolete-item-face               ((t (:foreground ,color-10))))
   `(newsticker-old-item-face                         ((t (:foreground ,color-8))))
   `(newsticker-statistics-face                       ((t (:foreground ,color-13))))
   `(newsticker-treeview-face                         ((t (:foreground ,color-13))))
   `(newsticker-treeview-immortal-face                ((t (:foreground ,color-9))))
   `(newsticker-treeview-listwindow-face              ((t (:foreground ,color-13))))
   `(newsticker-treeview-new-face                     ((t (:foreground ,color-11 :weight bold))))
   `(newsticker-treeview-obsolete-face                ((t (:foreground ,color-10))))
   `(newsticker-treeview-old-face                     ((t (:foreground ,color-8))))
   `(newsticker-treeview-selection-face               ((t (:background ,color-3 :foreground ,color-13))))
   ;; Third-party
   ;; highlight-symbol
   `(highlight-symbol-face                            ((t (:background ,color-4))))
   ;; ace-jump
   `(ace-jump-face-background                         ((t (:foreground ,color-6 :background ,color-2 :inverse-video nil))))
   `(ace-jump-face-foreground                         ((t (:foreground ,color-11 :background ,color-1 :inverse-video nil))))
   ;; anzu
   `(anzu-mode-line                                   ((t (:foreground ,color-12 :weight bold))))
   ;; full-ack
   `(ack-separator                                    ((t (:foreground ,color-13))))
   `(ack-file                                         ((t (:foreground ,color-11))))
   `(ack-line                                         ((t (:foreground ,color-13))))
   `(ack-match                                        ((t (:foreground ,color-11 :background ,color-3 :weight bold))))
   ;; auctex
   `(font-latex-bold-face                             ((t (:inherit bold))))
   `(font-latex-warning-face                          ((t (:foreground nil :inherit font-lock-warning-face))))
   `(font-latex-sectioning-5-face                     ((t (:foreground ,color-10 :weight bold ))))
   `(font-latex-sedate-face                           ((t (:foreground ,color-13))))
   `(font-latex-italic-face                           ((t (:foreground ,color-12 :slant italic))))
   `(font-latex-string-face                           ((t (:inherit ,font-lock-string-face))))
   `(font-latex-math-face                             ((t (:foreground ,color-11))))
   ;; auto-complete
   `(ac-candidate-face                                ((t (:background ,color-8 :foreground ,color-2 :underline nil))))
   `(ac-selection-face                                ((t (:background ,color-7 :foreground ,color-13 :underline nil))))
   `(ac-yasnippet-candidate-face                      ((t (:background ,color-8 :foreground ,color-3))))
   `(ac-yasnippet-selection-face                      ((t (:background ,color-7 :foreground ,color-12))))
   `(ac-slime-menu-face                               ((t (:background ,color-8 :foreground ,color-1))))
   `(ac-slime-selection-face                          ((t (:background ,color-7 :foreground ,color-12))))
   `(ac-gtags-candidate-face                          ((t (:background ,color-8 :foreground ,color-1))))
   `(ac-gtags-selection-face                          ((t (:background ,color-7 :foreground ,color-12))))
   `(ac-emmet-candidate-face                          ((t (:background ,color-8 :foreground ,color-2))))
   `(ac-emmet-selection-face                          ((t (:background ,color-7 :foreground ,color-12))))
   `(popup-tip-face                                   ((t (:background ,color-11 :foreground ,color-2))))
   `(popup-scroll-bar-foreground-face                 ((t (:background ,color-6))))
   `(popup-scroll-bar-background-face                 ((t (:background ,color-3))))
   `(popup-isearch-match                              ((t (:background ,color-4 :foreground ,color-13))))
   ;; android mode
   `(android-mode-debug-face                          ((t (:foreground ,color-10))))
   `(android-mode-error-face                          ((t (:inherit error-face))))
   `(android-mode-info-face                           ((t (:foreground ,color-13))))
   `(android-mode-verbose-face                        ((t (:foreground ,color-9))))
   `(android-mode-warning-face                        ((t (:foreground ,color-13))))
   ;; bm
   `(bm-face                                          ((t (:background ,color-12 :foreground ,color-5))))
   `(bm-fringe-face                                   ((t (:background ,color-4 :foreground ,color-2))))
   `(bm-fringe-persistent-face                        ((t (:background ,color-4 :foreground ,color-2))))
   `(bm-persistent-face                               ((t (:background ,color-8 :foreground ,color-5))))
   ;; clojure-test-mode
   `(clojure-test-failure-face                        ((t (:foreground ,color-11 :weight bold :underline t))))
   `(clojure-test-error-face                          ((t (:foreground ,color-10 :weight bold :underline t))))
   `(clojure-test-success-face                        ((t (:foreground ,color-10 :weight bold :underline t))))
   ;; coq
   `(coq-solve-tactics-face                           ((t (:foreground nil :inherit font-lock-constant-face))))
   ;; ctable
   `(ctbl:face-cell-select                            ((t (:background ,color-11 :foreground ,color-5))))
   `(ctbl:face-continue-bar                           ((t (:background ,color-4 :foreground ,color-5))))
   `(ctbl:face-row-select                             ((t (:background ,color-12 :foreground ,color-5))))
   ;; diff
   `(diff-added                                       ((,class (:foreground ,color-13 :background nil)) (t (:foreground ,color-8 :background nil))))
   `(diff-changed                                     ((t (:foreground ,color-13))))
   `(diff-removed                                     ((,class (:foreground ,color-10 :background nil)) (t (:foreground ,color-8 :background nil))))
   `(diff-refine-added                                ((t :inherit diff-added :weight bold)))
   `(diff-refine-change                               ((t :inherit diff-changed :weight bold)))
   `(diff-refine-removed                              ((t :inherit diff-removed :weight bold)))
   `(diff-header                                      ((,class (:background ,color-7)) (t (:background ,color-13 :foreground ,color-5))))
   `(diff-file-header                                 ((,class (:background ,color-7 :foreground ,color-13 :bold t)) (t (:background ,color-13 :foreground ,color-5 :bold t))))
   ;; dired
   `(dired-directory                                  ((t (:foreground ,color-9 :bold t))))
   ;; dired+
   `(diredp-display-msg                               ((t (:foreground ,color-11))))
   `(diredp-compressed-file-suffix                    ((t (:foreground ,color-11))))
   `(diredp-date-time                                 ((t (:foreground ,color-10))))
   `(diredp-deletion                                  ((t (:foreground ,color-13))))
   `(diredp-deletion-file-name                        ((t (:foreground ,color-10))))
   `(diredp-dir-heading                               ((t (:foreground ,color-10 :bold t))))
   `(diredp-dir-priv                                  ((t (:foreground ,color-10 :bold t))))
   `(diredp-dir-name                                  ((t (:foreground ,color-12 :bold t))))
   `(diredp-exec-priv                                 ((t (:foreground ,color-9))))
   `(diredp-executable-tag                            ((t (:foreground ,color-10))))
   `(diredp-file-name                                 ((t (:foreground ,color-11))))
   `(diredp-file-suffix                               ((t (:foreground ,color-11 :bold t))))
   `(diredp-flag-mark                                 ((t (:foreground ,color-13))))
   `(diredp-flag-mark-line                            ((t (:foreground ,color-11))))
   `(diredp-ignored-file-name                         ((t (:foreground ,color-9))))
   `(diredp-link-priv                                 ((t (:foreground ,color-13))))
   `(diredp-mode-line-flagged                         ((t (:foreground ,color-13))))
   `(diredp-mode-line-marked                          ((t (:foreground ,color-11))))
   `(diredp-no-priv                                   ((t (:foreground ,color-13))))
   `(diredp-number                                    ((t (:foreground ,color-10))))
   `(diredp-other-priv                                ((t (:foreground ,color-12))))
   `(diredp-rare-priv                                 ((t (:foreground ,color-9))))
   `(diredp-read-priv                                 ((t (:foreground ,color-9 :italic t))))
   `(diredp-symlink                                   ((t (:foreground ,color-13))))
   `(diredp-write-priv                                ((t (:foreground ,color-10))))
   ;; ediff
   `(ediff-current-diff-A                             ((t (:background ,color-6))))
   `(ediff-current-diff-Ancestor                      ((t (:background ,color-6))))
   `(ediff-current-diff-B                             ((t (:background ,color-6))))
   `(ediff-current-diff-C                             ((t (:background ,color-6))))
   `(ediff-even-diff-A                                ((t (:background ,color-5))))
   `(ediff-even-diff-Ancestor                         ((t (:background ,color-5))))
   `(ediff-even-diff-B                                ((t (:background ,color-5))))
   `(ediff-even-diff-C                                ((t (:background ,color-5))))
   `(ediff-odd-diff-A                                 ((t (:background ,color-5))))
   `(ediff-odd-diff-Ancestor                          ((t (:background ,color-5))))
   `(ediff-odd-diff-B                                 ((t (:background ,color-5))))
   `(ediff-odd-diff-C                                 ((t (:background ,color-5))))
   `(ediff-fine-diff-A                                ((t (:foreground ,color-13 :background ,color-7))))
   `(ediff-fine-diff-Ancestor                         ((t (:foreground ,color-13 :background ,color-7))))
   `(ediff-fine-diff-B                                ((t (:foreground ,color-13 :background ,color-7))))
   `(ediff-fine-diff-C                                ((t (:foreground ,color-13 :background ,color-7))))
   ;; elfeed
   `(elfeed-search-date-face                          ((t (:foreground ,color-8))))
   `(elfeed-search-feed-face                          ((t (:foreground ,color-9))))
   `(elfeed-search-tag-face                           ((t (:foreground ,color-8))))
   `(elfeed-search-unread-count-face                  ((t (:foreground ,color-2))))
   ;; ert
   `(ert-test-result-expected                         ((t (:foreground ,color-13 :background ,color-4))))
   `(ert-test-result-unexpected                       ((t (:foreground ,color-10 :background ,color-4))))
   ;; eshell
   `(eshell-prompt                                    ((t (:foreground ,color-13 :weight bold))))
   `(eshell-ls-archive                                ((t (:foreground ,color-9 :weight bold))))
   `(eshell-ls-backup                                 ((t (:inherit font-lock-comment-face))))
   `(eshell-ls-clutter                                ((t (:inherit font-lock-comment-face))))
   `(eshell-ls-directory                              ((t (:foreground ,color-11 :weight bold))))
   `(eshell-ls-executable                             ((t (:foreground ,color-11 :weight bold))))
   `(eshell-ls-unreadable                             ((t (:foreground ,color-13))))
   `(eshell-ls-missing                                ((t (:inherit font-lock-warning-face))))
   `(eshell-ls-product                                ((t (:inherit font-lock-doc-face))))
   `(eshell-ls-special                                ((t (:foreground ,color-13 :weight bold))))
   `(eshell-ls-symlink                                ((t (:foreground ,color-12 :weight bold))))
   ;; flx
   `(flx-highlight-face                               ((t (:foreground ,color-11 :weight bold))))
   ;; flycheck
   `(flycheck-error                                   ((((supports :underline (:style wave))) (:underline (:style wave :color ,color-10) :inherit unspecified)) (t (:foreground ,color-7 :weight bold :underline t))))
   `(flycheck-warning                                 ((((supports :underline (:style wave))) (:underline (:style wave :color ,color-9) :inherit unspecified)) (t (:foreground ,color-9 :weight bold :underline t))))
   `(flycheck-info                                    ((((supports :underline (:style wave))) (:underline (:style wave :color ,color-8) :inherit unspecified)) (t (:foreground ,color-10 :weight bold :underline t))))
   `(flycheck-fringe-error                            ((t (:inherit error))))
   `(flycheck-fringe-warning                          ((t (:inherit fringe))))
   `(flycheck-fringe-info                             ((t (:inherit fringe))))
   ;; flymake
   `(flymake-errline                                  ((((supports :underline (:style wave))) (:underline (:style wave :color ,color-10) :inherit unspecified :foreground unspecified :background unspecified)) (t (:foreground ,color-9 :weight bold :underline t))))
   `(flymake-warnline                                 ((((supports :underline (:style wave))) (:underline (:style wave :color ,color-11) :inherit unspecified :foreground unspecified :background unspecified)) (t (:foreground ,color-11 :weight bold :underline t))))
   `(flymake-infoline                                 ((((supports :underline (:style wave))) (:underline (:style wave :color ,color-9) :inherit unspecified :foreground unspecified :background unspecified)) (t (:foreground ,color-8 :weight bold :underline t))))
   ;; flyspell
   `(flyspell-duplicate                               ((((supports :underline (:style wave))) (:underline (:style wave :color ,color-11) :inherit unspecified)) (t (:foreground ,color-11 :weight bold :underline t))))
   `(flyspell-incorrect                               ((((supports :underline (:style wave))) (:underline (:style wave :color ,color-10) :inherit unspecified)) (t (:foreground ,color-9 :weight bold :underline t))))
   ;; erc
   `(erc-action-face                                  ((t (:inherit erc-default-face))))
   `(erc-bold-face                                    ((t (:weight bold))))
   `(erc-current-nick-face                            ((t (:foreground ,color-11 :weight bold))))
   `(erc-dangerous-host-face                          ((t (:inherit font-lock-warning-face))))
   `(erc-default-face                                 ((t (:foreground ,color-13))))
   `(erc-direct-msg-face                              ((t (:inherit erc-default))))
   `(erc-error-face                                   ((t (:inherit font-lock-warning-face))))
   `(erc-fool-face                                    ((t (:inherit erc-default))))
   `(erc-highlight-face                               ((t (:inherit hover-highlight))))
   `(erc-input-face                                   ((t (:foreground ,color-13))))
   `(erc-keyword-face                                 ((t (:foreground ,color-11 :weight bold))))
   `(erc-nick-default-face                            ((t (:foreground ,color-13 :weight bold))))
   `(erc-my-nick-face                                 ((t (:foreground ,color-10 :weight bold))))
   `(erc-nick-msg-face                                ((t (:inherit erc-default))))
   `(erc-notice-face                                  ((t (:foreground ,color-9))))
   `(erc-pal-face                                     ((t (:foreground ,color-11 :weight bold))))
   `(erc-prompt-face                                  ((t (:foreground ,color-11 :background ,color-4 :weight bold))))
   `(erc-timestamp-face                               ((t (:foreground ,color-13))))
   `(erc-underline-face                               ((t (:underline t))))
   ;; git-gutter
   `(git-gutter:added                                 ((t (:inherit fringe))))
   `(git-gutter:deleted                               ((t (:inherit fringe))))
   `(git-gutter:modified                              ((t (:inherit fringe))))
   `(git-gutter:unchanged                             ((t (:inherit fringe))))
   ;; git-gutter-fr
   `(git-gutter-fr:added                              ((t (:inherit fringe))))
   `(git-gutter-fr:deleted                            ((t (:inherit fringe))))
   `(git-gutter-fr:modified                           ((t (:inherit fringe))))

   ;; gnus
   `(gnus-group-mail-1                                ((t (:bold t :inherit gnus-group-mail-1-empty))))
   `(gnus-group-mail-1-empty                          ((t (:inherit gnus-group-news-1-empty))))
   `(gnus-group-mail-2                                ((t (:bold t :inherit gnus-group-mail-2-empty))))
   `(gnus-group-mail-2-empty                          ((t (:inherit gnus-group-news-2-empty))))
   `(gnus-group-mail-3                                ((t (:bold t :inherit gnus-group-mail-3-empty))))
   `(gnus-group-mail-3-empty                          ((t (:inherit gnus-group-news-3-empty))))
   `(gnus-group-mail-4                                ((t (:bold t :inherit gnus-group-mail-4-empty))))
   `(gnus-group-mail-4-empty                          ((t (:inherit gnus-group-news-4-empty))))
   `(gnus-group-mail-5                                ((t (:bold t :inherit gnus-group-mail-5-empty))))
   `(gnus-group-mail-5-empty                          ((t (:inherit gnus-group-news-5-empty))))
   `(gnus-group-mail-6                                ((t (:bold t :inherit gnus-group-mail-6-empty))))
   `(gnus-group-mail-6-empty                          ((t (:inherit gnus-group-news-6-empty))))
   `(gnus-group-mail-low                              ((t (:bold t :inherit gnus-group-mail-low-empty))))
   `(gnus-group-mail-low-empty                        ((t (:inherit gnus-group-news-low-empty))))
   `(gnus-group-news-1                                ((t (:bold t :inherit gnus-group-news-1-empty))))
   `(gnus-group-news-2                                ((t (:bold t :inherit gnus-group-news-2-empty))))
   `(gnus-group-news-3                                ((t (:bold t :inherit gnus-group-news-3-empty))))
   `(gnus-group-news-4                                ((t (:bold t :inherit gnus-group-news-4-empty))))
   `(gnus-group-news-5                                ((t (:bold t :inherit gnus-group-news-5-empty))))
   `(gnus-group-news-6                                ((t (:bold t :inherit gnus-group-news-6-empty))))
   `(gnus-group-news-low                              ((t (:bold t :inherit gnus-group-news-low-empty))))
   `(gnus-header-content                              ((t (:inherit message-header-other))))
   `(gnus-header-from                                 ((t (:inherit message-header-from))))
   `(gnus-header-name                                 ((t (:inherit message-header-name))))
   `(gnus-header-newsgroups                           ((t (:inherit message-header-other))))
   `(gnus-header-subject                              ((t (:inherit message-header-subject))))
   `(gnus-summary-cancelled                           ((t (:foreground ,color-11))))
   `(gnus-summary-high-ancient                        ((t (:foreground ,color-11))))
   `(gnus-summary-high-read                           ((t (:foreground ,color-9 :weight bold))))
   `(gnus-summary-high-ticked                         ((t (:foreground ,color-11 :weight bold))))
   `(gnus-summary-high-unread                         ((t (:foreground ,color-13 :weight bold))))
   `(gnus-summary-low-ancient                         ((t (:foreground ,color-11))))
   `(gnus-summary-low-read                            ((t (:foreground ,color-9))))
   `(gnus-summary-low-ticked                          ((t (:foreground ,color-11 :weight bold))))
   `(gnus-summary-low-unread                          ((t (:foreground ,color-13))))
   `(gnus-summary-normal-ancient                      ((t (:foreground ,color-11))))
   `(gnus-summary-normal-read                         ((t (:foreground ,color-9))))
   `(gnus-summary-normal-ticked                       ((t (:foreground ,color-11 :weight bold))))
   `(gnus-summary-normal-unread                       ((t (:foreground ,color-13))))
   `(gnus-summary-selected                            ((t (:foreground ,color-13 :weight bold))))
   `(gnus-cite-1                                      ((t (:foreground ,color-11))))
   `(gnus-cite-10                                     ((t (:foreground ,color-12))))
   `(gnus-cite-11                                     ((t (:foreground ,color-13))))
   `(gnus-cite-2                                      ((t (:foreground ,color-10))))
   `(gnus-cite-3                                      ((t (:foreground ,color-9))))
   `(gnus-cite-4                                      ((t (:foreground ,color-11))))
   `(gnus-cite-5                                      ((t (:foreground ,color-10))))
   `(gnus-cite-6                                      ((t (:foreground ,color-9))))
   `(gnus-cite-7                                      ((t (:foreground ,color-10))))
   `(gnus-cite-8                                      ((t (:foreground ,color-9))))
   `(gnus-cite-9                                      ((t (:foreground ,color-9))))
   `(gnus-group-news-1-empty                          ((t (:foreground ,color-13))))
   `(gnus-group-news-2-empty                          ((t (:foreground ,color-12))))
   `(gnus-group-news-3-empty                          ((t (:foreground ,color-10))))
   `(gnus-group-news-4-empty                          ((t (:foreground ,color-9))))
   `(gnus-group-news-5-empty                          ((t (:foreground ,color-8))))
   `(gnus-group-news-6-empty                          ((t (:foreground ,color-7))))
   `(gnus-group-news-low-empty                        ((t (:foreground ,color-7))))
   `(gnus-signature                                   ((t (:foreground ,color-13))))
   `(gnus-x                                           ((t (:background ,color-13 :foreground ,color-5))))
   ;; guide-key
   `(guide-key/highlight-command-face                 ((t (:foreground ,color-11))))
   `(guide-key/key-face                               ((t (:foreground ,color-9))))
   `(guide-key/prefix-command-face                    ((t (:foreground ,color-10))))
   ;; helm
   `(helm-header                                      ((t (:foreground ,color-9 :background ,color-4 :underline nil :box nil))))
   `(helm-source-header                               ((t (:foreground ,color-3 :background ,color-12 :underline nil :box (:color ,color-11 :line-width 1 :style released-button )))))
   `(helm-selection                                   ((t (:background ,color-7 :foreground ,color-12))))
   `(helm-selection-line                              ((t (:background ,color-7))))
   `(helm-visible-mark                                ((t (:foreground ,color-5 :background ,color-11))))
   `(helm-candidate-number                            ((t (:foreground ,color-13 :background ,color-3))))
   `(helm-separator                                   ((t (:foreground ,color-10 :background ,color-4))))
   `(helm-time-zone-current                           ((t (:foreground ,color-11 :background ,color-4))))
   `(helm-time-zone-home                              ((t (:foreground ,color-10 :background ,color-4))))
   `(helm-bookmark-addressbook                        ((t (:foreground ,color-11 :background ,color-4))))
   `(helm-bookmark-directory                          ((t (:foreground nil :background nil :inherit helm-ff-directory))))
   `(helm-bookmark-file                               ((t (:foreground nil :background nil :inherit helm-ff-file))))
   `(helm-bookmark-gnus                               ((t (:foreground ,color-10 :background ,color-4))))
   `(helm-bookmark-info                               ((t (:foreground ,color-11 :background ,color-4))))
   `(helm-bookmark-man                                ((t (:foreground ,color-13 :background ,color-4))))
   `(helm-bookmark-w3m                                ((t (:foreground ,color-10 :background ,color-4))))
   `(helm-buffer-not-saved                            ((t (:foreground ,color-10 :background ,color-4))))
   `(helm-buffer-process                              ((t (:foreground ,color-12 :background ,color-4))))
   `(helm-buffer-saved-out                            ((t (:foreground ,color-13 :background ,color-4))))
   `(helm-buffer-size                                 ((t (:foreground ,color-7 :background ,color-4))))
   `(helm-buffer-directory                            ((t (:foreground ,color-10 :background ,color-4))))
   `(helm-lisp-completion-info                        ((t (:foreground ,color-10 :background ,color-4))))
   `(helm-lisp-show-completion                        ((t (:foreground ,color-12 :background ,color-6))))
   `(helm-locate-finish                               ((t (:foreground ,color-8 :background ,color-4))))
   `(helm-dotted-symlink-directory                    ((t (:foreground ,color-7 :background ,color-5))))
   `(helm-ff-dotted-symlink-directory                 ((t (:foreground ,color-7 :background ,color-5))))
   `(helm-ff-directory                                ((t (:foreground ,color-12 :background ,color-4 :weight bold))))
   `(helm-ff-file                                     ((t (:foreground ,color-13 :background ,color-4 :weight normal))))
   `(helm-ff-executable                               ((t (:foreground ,color-11 :background ,color-4 :weight normal))))
   `(helm-ff-invalid-symlink                          ((t (:foreground ,color-10 :background ,color-4 :weight bold))))
   `(helm-ff-symlink                                  ((t (:foreground ,color-13 :background ,color-4 :weight bold))))
   `(helm-ff-prefix                                   ((t (:foreground ,color-5 :background ,color-13 :weight normal))))
   `(helm-grep-cmd-line                               ((t (:foreground ,color-12 :background ,color-4))))
   `(helm-grep-file                                   ((t (:foreground ,color-13 :background ,color-4))))
   `(helm-grep-finish                                 ((t (:foreground ,color-11 :background ,color-4))))
   `(helm-grep-lineno                                 ((t (:foreground ,color-5 :background ,color-4))))
   `(helm-match                                       ((t (:foreground ,color-14 :background ,color-4 :bold nil))))
   `(helm-grep-match                                  ((t (:inherit helm-match))))
   `(helm-grep-running                                ((t (:foreground ,color-10 :background ,color-4))))
   `(helm-moccur-buffer                               ((t (:foreground ,color-12 :background ,color-4))))
   `(helm-mu-contacts-address-face                    ((t (:foreground ,color-7 :background ,color-4))))
   `(helm-mu-contacts-name-face                       ((t (:foreground ,color-13 :background ,color-4))))
   `(helm-M-x-key                                     ((t (:foreground ,color-12 :background ,color-4 :weight bold))))

   `(helm-swoop-target-word-face                      ((t (:foreground ,color-14 :background ,color-5 :weight bold))))
   `(helm-swoop-target-line-face                      ((t ( :foreground ,color-9 :background ,color-5))))
   `(helm-swoop-target-line-block-face                ((t ( :foreground ,color-10 :background ,color-6))))

   ;; hl-line-mode
   `(hl-line-face                                     ((,class (:background ,color-5 :foreground ,color-11))))
   `(hl-line                                          ((,class (:background ,color-5 :foreground ,color-11))))
   ;;
   `(idle-highlight                                   ((,class (:background ,color-7 :foreground ,color-11))))   
   ;; hl-sexp
   `(hl-sexp-face                                     ((,class (:background ,color-6)) (t :weight bold)))
   ;; ido-mode
   `(ido-first-match                                  ((t (:foreground ,color-13 :weight bold))))
   `(ido-only-match                                   ((t (:foreground ,color-11 :weight bold))))
   `(ido-subdir                                       ((t (:foreground ,color-13))))
   `(ido-indicator                                    ((t (:foreground ,color-13 :background ,color-7))))
   ;; iedit-mode
   `(iedit-occurrence                                 ((t (:background ,color-7 :weight bold))))
   ;; js2-mode

   `(js2-warning                                      ((t (:background ,color-5))))
   `(js2-error                                        ((t (:background ,color-6 :foreground ,color-14 :italic t))))
   `(js2-jsdoc-tag                                    ((t (:foreground ,color-8))))
   `(js2-jsdoc-type                                   ((t (:foreground ,color-9))))
   `(js2-jsdoc-value                                  ((t (:foreground ,color-9))))
   `(js2-jsdoc-html-tag-name                          ((t (:foreground ,color-10))))
   `(js2-jsdoc-html-tag-delimiter                     ((t (:foreground ,color-9))))
   `(js2-function-param                               ((t (:foreground ,color-10))))
   `(js2-function-call                                ((t (:foreground ,color-12 :underline nil :box ,(tao-boxed color-6)))))
   `(js2-object-property                              ((t (:foreground ,color-10 ))))
   `(js2-object-property-access                       ((t (:foreground ,color-10 ))))
   `(js2-external-variable                            ((t (:foreground ,color-14 :italic t ))))

   ;; jsx
   `(rjsx-tag                                         ((t (:foreground, color-10))))
   `(rjsx-tag-bracket-face                            ((t (:foreground, color-8 ))))   
   `(rjsx-attr                                        ((t (:foreground, color-8 :bold nil))))
   ;; jabber-mode
   `(jabber-roster-user-away                          ((t (:foreground ,color-11))))
   `(jabber-roster-user-online                        ((t (:foreground ,color-10))))
   `(jabber-roster-user-dnd                           ((t (:foreground ,color-11))))
   `(jabber-rare-time-face                            ((t (:foreground ,color-10))))
   `(jabber-chat-prompt-local                         ((t (:foreground ,color-10))))
   `(jabber-chat-prompt-foreign                       ((t (:foreground ,color-11))))
   `(jabber-activity-face                             ((t (:foreground ,color-11))))
   `(jabber-activity-personal-face                    ((t (:foreground ,color-11))))
   `(jabber-title-small                               ((t (:height ,(tao-theme-height 1.1) :weight bold))))
   `(jabber-title-medium                              ((t (:height ,(tao-theme-height 1.2) :weight bold))))
   `(jabber-title-large                               ((t (:height ,(tao-theme-height 1.3) :weight bold))))
   ;; ledger-mode
   `(ledger-font-payee-uncleared-face                 ((t (:foreground ,color-9 :weight bold))))
   `(ledger-font-payee-cleared-face                   ((t (:foreground ,color-13 :weight normal))))
   `(ledger-font-xact-highlight-face                  ((t (:background ,color-6))))
   `(ledger-font-pending-face                         ((t (:foreground ,color-11 :weight normal))))
   `(ledger-font-other-face                           ((t (:foreground ,color-13))))
   `(ledger-font-posting-account-face                 ((t (:foreground ,color-10))))
   `(ledger-font-posting-account-cleared-face         ((t (:foreground ,color-13))))
   `(ledger-font-posting-account-pending-face         ((t (:foreground ,color-11))))
   `(ledger-font-posting-amount-face                  ((t (:foreground ,color-11))))
   `(ledger-font-posting-account-pending-face         ((t (:foreground ,color-11))))
   `(ledger-occur-narrowed-face                       ((t (:foreground ,color-7 :invisible t))))
   `(ledger-occur-xact-face                           ((t (:background ,color-6))))
   `(ledger-font-comment-face                         ((t (:foreground ,color-9))))
   `(ledger-font-reconciler-uncleared-face            ((t (:foreground ,color-9 :weight bold))))
   `(ledger-font-reconciler-cleared-face              ((t (:foreground ,color-13 :weight normal))))
   `(ledger-font-reconciler-pending-face              ((t (:foreground ,color-11 :weight normal))))
   `(ledger-font-report-clickable-face                ((t (:foreground ,color-11 :weight normal))))
   ;; linum-mode
   `(linum                                            ((t (:foreground ,color-11 :background ,color-4))))
   ;; macrostep
   `(macrostep-gensym-1                               ((t (:foreground ,color-11 :background ,color-3))))
   `(macrostep-gensym-2                               ((t (:foreground ,color-11 :background ,color-3))))
   `(macrostep-gensym-3                               ((t (:foreground ,color-11 :background ,color-3))))
   `(macrostep-gensym-4                               ((t (:foreground ,color-10 :background ,color-3))))
   `(macrostep-gensym-5                               ((t (:foreground ,color-13 :background ,color-3))))
   `(macrostep-expansion-highlight-face               ((t (:inherit highlight))))
   `(macrostep-macro-face                             ((t (:underline t))))
   ;; magit
   `(magit-section-title                              ((t (:foreground ,color-13 :weight bold))))
   `(magit-section-highlight                          ((t (:foreground ,color-15 :weight normal))))
   `(magit-section-heading-selection                  ((t (:foreground ,color-13 :weight bold))))
   `(magit-section-heading                            ((t (:foreground ,color-13 :weight bold))))         
   `(magit-branch                                     ((t (:foreground ,color-11 :weight bold))))
   `(magit-log-author                                 ((t (:foreground ,color-8 :italic t))))
   `(magit-tag                                        ((t (:foreground ,color-13 :bold t))))   
   `(magit-item-highlight                             ((t (:background ,color-6 :bold nil))))
   `(magit-diff-file-heading-highlight                ((t (:background ,color-6 :bold nil))))
   ;; egg
   `(egg-text-base                                    ((t (:foreground ,color-13))))
   `(egg-help-header-1                                ((t (:foreground ,color-13))))
   `(egg-help-header-2                                ((t (:foreground ,color-12))))
   `(egg-branch                                       ((t (:foreground ,color-13))))
   `(egg-branch-mono                                  ((t (:foreground ,color-13))))
   `(egg-term                                         ((t (:foreground ,color-13))))
   `(egg-diff-add                                     ((t (:foreground ,color-13))))
   `(egg-diff-del                                     ((t (:foreground ,color-11))))
   `(egg-diff-file-header                             ((t (:foreground ,color-11))))
   `(egg-section-title                                ((t (:foreground ,color-13))))
   `(egg-stash-mono                                   ((t (:foreground ,color-13))))
   ;; message-mode
   `(message-cited-text                               ((t (:inherit font-lock-comment-face))))
   `(message-header-name                              ((t (:foreground ,color-10))))
   `(message-header-other                             ((t (:foreground ,color-9))))
   `(message-header-to                                ((t (:foreground ,color-13 :weight bold))))
   `(message-header-from                              ((t (:foreground ,color-13 :weight bold))))
   `(message-header-cc                                ((t (:foreground ,color-13 :weight bold))))
   `(message-header-newsgroups                        ((t (:foreground ,color-13 :weight bold))))
   `(message-header-subject                           ((t (:foreground ,color-11 :weight bold))))
   `(message-header-xheader                           ((t (:foreground ,color-9))))
   `(message-mml                                      ((t (:foreground ,color-13 :weight bold))))
   `(message-separator                                ((t (:inherit font-lock-comment-face))))
   ;; mew
   `(mew-face-header-subject                          ((t (:foreground ,color-11))))
   `(mew-face-header-from                             ((t (:foreground ,color-13))))
   `(mew-face-header-date                             ((t (:foreground ,color-9))))
   `(mew-face-header-to                               ((t (:foreground ,color-10))))
   `(mew-face-header-key                              ((t (:foreground ,color-9))))
   `(mew-face-header-private                          ((t (:foreground ,color-9))))
   `(mew-face-header-important                        ((t (:foreground ,color-11))))
   `(mew-face-header-marginal                         ((t (:foreground ,color-13 :weight bold))))
   `(mew-face-header-warning                          ((t (:foreground ,color-10))))
   `(mew-face-header-xmew                             ((t (:foreground ,color-9))))
   `(mew-face-header-xmew-bad                         ((t (:foreground ,color-10))))
   `(mew-face-body-url                                ((t (:foreground ,color-11))))
   `(mew-face-body-comment                            ((t (:foreground ,color-13 :slant italic))))
   `(mew-face-body-cite1                              ((t (:foreground ,color-9))))
   `(mew-face-body-cite2                              ((t (:foreground ,color-11))))
   `(mew-face-body-cite3                              ((t (:foreground ,color-11))))
   `(mew-face-body-cite4                              ((t (:foreground ,color-13))))
   `(mew-face-body-cite5                              ((t (:foreground ,color-10))))
   `(mew-face-mark-review                             ((t (:foreground ,color-11))))
   `(mew-face-mark-escape                             ((t (:foreground ,color-9))))
   `(mew-face-mark-delete                             ((t (:foreground ,color-10))))
   `(mew-face-mark-unlink                             ((t (:foreground ,color-13))))
   `(mew-face-mark-refile                             ((t (:foreground ,color-9))))
   `(mew-face-mark-unread                             ((t (:foreground ,color-9))))
   `(mew-face-eof-message                             ((t (:foreground ,color-9))))
   `(mew-face-eof-part                                ((t (:foreground ,color-13))))
   ;; mic-paren
   `(paren-face-match                                 ((t (:foreground ,color-14 :box ,(tao-boxed color-8)))))
   `(paren-face-mismatch                              ((t (:foreground ,color-1 :background ,color-6 ))))
   `(paren-face-no-match                              ((t (:foreground ,color-14 :background ,color-6 ))))
   ;; mingus
   `(mingus-directory-face                            ((t (:foreground ,color-11))))
   `(mingus-pausing-face                              ((t (:foreground ,color-10))))
   `(mingus-playing-face                              ((t (:foreground ,color-12))))
   `(mingus-playlist-face                             ((t (:foreground ,color-12 ))))
   `(mingus-song-file-face                            ((t (:foreground ,color-13))))
   `(mingus-stopped-face                              ((t (:foreground ,color-10))))
   ;; nav
   `(nav-face-heading                                 ((t (:foreground ,color-13))))
   `(nav-face-button-num                              ((t (:foreground ,color-12))))
   `(nav-face-dir                                     ((t (:foreground ,color-9))))
   `(nav-face-hdir                                    ((t (:foreground ,color-10))))
   `(nav-face-file                                    ((t (:foreground ,color-13))))
   `(nav-face-hfile                                   ((t (:foreground ,color-7))))
   ;; mu4e
   `(mu4e-cited-1-face                                ((t (:foreground ,color-11    :slant italic))))
   `(mu4e-cited-2-face                                ((t (:foreground ,color-11 :slant italic))))
   `(mu4e-cited-3-face                                ((t (:foreground ,color-9  :slant italic))))
   `(mu4e-cited-4-face                                ((t (:foreground ,color-9   :slant italic))))
   `(mu4e-cited-5-face                                ((t (:foreground ,color-7  :slant italic))))
   `(mu4e-cited-6-face                                ((t (:foreground ,color-8 :slant italic))))
   `(mu4e-cited-7-face                                ((t (:foreground ,color-11    :slant italic))))
   `(mu4e-replied-face                                ((t (:foreground ,color-8))))
   `(mu4e-trashed-face                                ((t (:foreground ,color-8 :strike-through t))))
   ;; mumamo
   `(mumamo-background-chunk-major                    ((t (:background nil))))
   `(mumamo-background-chunk-submode1                 ((t (:background ,color-3))))
   `(mumamo-background-chunk-submode2                 ((t (:background ,color-7))))
   `(mumamo-background-chunk-submode3                 ((t (:background ,color-8))))
   `(mumamo-background-chunk-submode4                 ((t (:background ,color-6))))
   `(holiday                                          ((t (:background ,color-5 :weight bold))) t)
   `(diary                                          ((t (:background ,color-4 :box ,(tao-boxed color-7)))) t)   
   ;; org-mode
   `(org-agenda-date-today                            ((t (:foreground ,color-14 :slant italic :weight bold))) t)
   `(org-agenda-clocking                              ((t (:foreground ,color-14 :weight bold))) t)
   `(org-agenda-structure                             ((t (:inherit font-lock-comment-face))))
   `(org-archived                                     ((t (:foreground ,color-13 :weight bold))))
   `(org-checkbox                                     ((t (:foreground ,color-10 :background ,color-4 :bold t :inherit fixed-pitch))))
   `(org-checkbox-statistics-todo                     ((t (:foreground ,color-10 :background ,color-4 :bold t :inherit fixed-pitch))))   
   `(org-date                                         ((t (:foreground ,color-11 :underline t))))
   `(org-deadline-announce                            ((t (:foreground ,color-9))))
   `(org-formula                                      ((t (:foreground ,color-11))))
   `(org-macro                                        ((t (:foreground ,color-11 :italic t))))
   `(org-headline-done                                ((t (:foreground ,color-12))))
   `(org-hide                                         ((t (:foreground ,color-3))))
   `(org-document-title                               ((t (:foreground ,color-12 :height ,(tao-theme-height 0.8) :bold nil))))
   `(org-document-info                                ((t (:foreground ,color-7 :height ,(tao-theme-height 0.8)))))
   `(org-document-info-keyword                       ((t (:foreground ,color-7 :height ,(tao-theme-height 0.8)))))   
   `(org-heading                                      ((t (:foreground ,color-14 :bold nil :variable-pitch t ))))
   `(org-level-1                                      ((t ( :height ,(tao-theme-height 1.6) :inherit org-heading))))
   `(org-level-2                                      ((t ( :height ,(tao-theme-height 1.3) :inherit org-heading))))
   `(org-level-3                                      ((t ( :height ,(tao-theme-height 1.2) :inherit org-heading))))
   `(org-level-4                                      ((t ( :height ,(tao-theme-height 1.1) :inherit org-heading))))
   `(org-level-5                                      ((t ( :height ,(tao-theme-height 1.1) :inherit org-heading))))
   `(org-level-6                                      ((t ( :height ,(tao-theme-height 1.1) :inherit org-heading))))
   `(org-level-7                                      ((t ( :height ,(tao-theme-height 1.1) :inherit org-heading))))
   `(org-level-8                                      ((t ( :height ,(tao-theme-height 1.1) :inherit org-heading))))
   `(org-link                                         ((t (:foreground ,color-8 :underline ,color-7))))
   `(org-scheduled                                    ((t (:foreground ,color-13))))
   `(org-scheduled-previously                         ((t (:foreground ,color-10))))
   `(org-scheduled-today                              ((t (:foreground ,color-11))))
   `(org-sexp-date                                    ((t (:foreground ,color-11 :underline t))))
   `(org-table                                        ((t (:foreground ,color-11 :inherit fixed-pitch))))
   `(org-tag                                          ((t (:bold t :weight normal :italic nil :foreground ,color-8))))
   `(org-time-grid                                    ((t (:foreground ,color-11))))
   `(org-done                                         ((t (:bold t :background ,color-6 :foreground ,color-12 :weight normal))))
   `(org-todo                                         ((t (:bold t  :background ,color-9  :foreground ,color-2 :weight normal))))
   `(org-upcoming-deadline                            ((t (:inherit font-lock-keyword-face))))
   `(org-warning                                      ((t (:bold t :foreground ,color-10 :weight bold :underline nil))))
   `(org-column                                       ((t (:background ,color-3))))
   `(org-column-title                                 ((t (:background ,color-3 :underline t :weight bold))))
   `(org-mode-line-clock                              ((t (:foreground ,color-13 :background ,color-3))))
   `(org-mode-line-clock-overrun                      ((t (:foreground ,color-5 :background ,color-9))))
   `(org-ellipsis                                     ((t (:foreground ,color-8 ))))
   `(org-footnote                                     ((t (:foreground ,color-12 ))))
   `(org-meta-line                                    ((t (:background ,color-4 :foreground ,color-7 :height ,(tao-theme-height 0.7) :inherit fixed-pitch :box nil))))
   `(org-drawer                                    ((t (:background ,color-4 :foreground ,color-7 :height ,(tao-theme-height 0.7) :inherit fixed-pitch :box nil))))
   `(org-block-begin-line                             ((t (:background ,color-4 :foreground ,color-7 :height ,(tao-theme-height 0.7) :inherit fixed-pitch :box nil))))
   `(org-block-end-line                               ((t (:background ,color-4 :foreground ,color-7 :height ,(tao-theme-height 0.7) :inherit fixed-pitch))))
   `(org-special-keyword                              ((t (:inherit org-meta-line :foreground ,color-8 :italic nil))))
   `(org-property-value                               ((t (:inherit org-meta-line :foreground ,color-8 :italic t ))))
   `(org-block-background                             ((t (:foreground ,color-4 :height ,(tao-theme-height 0.9) :inherit fixed-pitch))))
   `(org-block                                        ((t (:background ,color-4  :height ,(tao-theme-height 0.9) :inherit fixed-pitch))))
   ;; outline   
   `(outline-1                                        ((t ( :height ,(tao-theme-height 1.7) :inherit org-heading))))
   `(outline-2                                        ((t ( :height ,(tao-theme-height 1.5) :inherit org-heading))))
   `(outline-3                                        ((t ( :height ,(tao-theme-height 1.3) :inherit org-heading))))
   `(outline-4                                        ((t ( :height ,(tao-theme-height 1.2) :inherit org-heading))))
   `(outline-5                                        ((t ( :height ,(tao-theme-height 1.1) :inherit org-heading))))
   `(outline-6                                        ((t ( :height ,(tao-theme-height 1.1) :inherit org-heading))))
   `(outline-7                                        ((t ( :height ,(tao-theme-height 1.1) :inherit org-heading))))
   `(outline-8                                        ((t ( :height ,(tao-theme-height 1.1) :inherit org-heading))))
   ;; p4
   `(p4-depot-added-face                              ((t :inherit diff-added)))
   `(p4-depot-branch-op-face                          ((t :inherit diff-changed)))
   `(p4-depot-deleted-face                            ((t :inherit diff-removed)))
   `(p4-depot-unmapped-face                           ((t :inherit diff-changed)))
   `(p4-diff-change-face                              ((t :inherit diff-changed)))
   `(p4-diff-del-face                                 ((t :inherit diff-removed)))
   `(p4-diff-file-face                                ((t :inherit diff-file-header)))
   `(p4-diff-head-face                                ((t :inherit diff-header)))
   `(p4-diff-ins-face                                 ((t :inherit diff-added)))
   ;; perspective
   `(persp-selected-face                              ((t (:foreground ,color-11 :inherit mode-line))))
   ;; powerline
   ;; `(powerline-active1                                ((t (:background ,color-6 :foreground ,color-11 :box nil :inherit mode-line ))))
   ;; `(powerline-active2                                ((t (:background ,color-3 :foreground ,color-10 :box nil :inherit mode-line ))))
   ;; `(powerline-inactive1                              ((t (:background ,color-3 :foreground ,color-8 :inherit mode-line-inactive))))
   ;; `(powerline-inactive2                              ((t (:background ,color-2 :foreground ,color-8 :inherit mode-line-inactive))))
   ;; proofgeneral
   `(proof-active-area-face                           ((t (:underline t))))
   `(proof-boring-face                                ((t (:foreground ,color-13 :background ,color-7))))
   `(proof-command-mouse-highlight-face               ((t (:inherit proof-mouse-highlight-face))))
   `(proof-debug-message-face                         ((t (:inherit proof-boring-face))))
   `(proof-declaration-name-face                      ((t (:inherit font-lock-keyword-face :foreground nil))))
   `(proof-eager-annotation-face                      ((t (:foreground ,color-5 :background ,color-11))))
   `(proof-error-face                                 ((t (:foreground ,color-13 :background ,color-7))))
   `(proof-highlight-dependency-face                  ((t (:foreground ,color-5 :background ,color-12))))
   `(proof-highlight-dependent-face                   ((t (:foreground ,color-5 :background ,color-11))))
   `(proof-locked-face                                ((t (:background ,color-6))))
   `(proof-mouse-highlight-face                       ((t (:foreground ,color-5 :background ,color-11))))
   `(proof-queue-face                                 ((t (:background ,color-7))))
   `(proof-region-mouse-highlight-face                ((t (:inherit proof-mouse-highlight-face))))
   `(proof-script-highlight-error-face                ((t (:background ,color-9))))
   `(proof-tacticals-name-face                        ((t (:inherit font-lock-constant-face :foreground nil :background ,color-4))))
   `(proof-tactics-name-face                          ((t (:inherit font-lock-constant-face :foreground nil :background ,color-4))))
   `(proof-warning-face                               ((t (:foreground ,color-5 :background ,color-12))))
   ;; rainbow-delimiters
   `(rainbow-delimiters-depth-1-face                  ((t (:foreground ,color-7))))
   `(rainbow-delimiters-depth-2-face                  ((t (:foreground ,color-8))))
   `(rainbow-delimiters-depth-3-face                  ((t (:foreground ,color-9))))
   `(rainbow-delimiters-depth-4-face                  ((t (:foreground ,color-10))))
   `(rainbow-delimiters-depth-5-face                  ((t (:foreground ,color-11))))
   `(rainbow-delimiters-depth-6-face                  ((t (:foreground ,color-12))))
   `(rainbow-delimiters-depth-7-face                  ((t (:foreground ,color-13))))
   `(rainbow-delimiters-depth-8-face                  ((t (:foreground ,color-14))))
   `(rainbow-delimiters-depth-9-face                  ((t (:foreground ,color-14))))
   `(rainbow-delimiters-depth-10-face                 ((t (:foreground ,color-14))))
   `(rainbow-delimiters-depth-11-face                 ((t (:foreground ,color-14))))
   `(rainbow-delimiters-depth-12-face                 ((t (:foreground ,color-14))))
   ;; rcirc
   `(rcirc-my-nick                                    ((t (:foreground ,color-11))))
   `(rcirc-other-nick                                 ((t (:foreground ,color-11))))
   `(rcirc-bright-nick                                ((t (:foreground ,color-11))))
   `(rcirc-dim-nick                                   ((t (:foreground ,color-9))))
   `(rcirc-server                                     ((t (:foreground ,color-9))))
   `(rcirc-server-prefix                              ((t (:foreground ,color-10))))
   `(rcirc-timestamp                                  ((t (:foreground ,color-11))))
   `(rcirc-nick-in-message                            ((t (:foreground ,color-13))))
   `(rcirc-nick-in-message-full-line                  ((t (:bold t))))
   `(rcirc-prompt                                     ((t (:foreground ,color-13 :bold t))))
   `(rcirc-track-nick                                 ((t (:inverse-video t))))
   `(rcirc-track-keyword                              ((t (:bold t))))
   `(rcirc-url                                        ((t (:bold t))))
   `(rcirc-keyword                                    ((t (:foreground ,color-13 :bold t))))
   ;; rpm-mode
   `(rpm-spec-dir-face                                ((t (:foreground ,color-9))))
   `(rpm-spec-doc-face                                ((t (:foreground ,color-9))))
   `(rpm-spec-ghost-face                              ((t (:foreground ,color-10))))
   `(rpm-spec-macro-face                              ((t (:foreground ,color-13))))
   `(rpm-spec-obsolete-tag-face                       ((t (:foreground ,color-10))))
   `(rpm-spec-package-face                            ((t (:foreground ,color-10))))
   `(rpm-spec-section-face                            ((t (:foreground ,color-13))))
   `(rpm-spec-tag-face                                ((t (:foreground ,color-11))))
   `(rpm-spec-var-face                                ((t (:foreground ,color-10))))
   ;; rst-mode
   `(rst-level-1-face                                 ((t (:foreground ,color-11))))
   `(rst-level-2-face                                 ((t (:foreground ,color-10))))
   `(rst-level-3-face                                 ((t (:foreground ,color-10))))
   `(rst-level-4-face                                 ((t (:foreground ,color-11))))
   `(rst-level-5-face                                 ((t (:foreground ,color-12))))
   `(rst-level-6-face                                 ((t (:foreground ,color-8))))
   ;; sh-mode
   `(sh-heredoc                                       ((t (:foreground ,color-13 :bold t))))
   `(sh-quoted-exec                                   ((t (:foreground ,color-10))))
   ;; show-paren
   `(show-paren-mismatch                              ((t (:foreground ,color-1 :background ,color-14 :weight bold))))
   `(show-paren-match                                 ((t (:foreground ,color-11 :underline t))))
   ;; smartparens
   `(sp-show-pair-mismatch-face                       ((t (:background ,color-6 :foreground ,color-14 :bold t :underline t))))
   `(sp-show-pair-match-face                          ((t (:background ,color-3 :foreground ,color-14 :box ,(tao-boxed color-8)))))
   ;; sml-mode-line
   '(sml-modeline-end-face                            ((t :inherit default :width condensed)))
   ;; SLIME
   `(slime-repl-output-face                           ((t (:foreground ,color-10))))
   `(slime-repl-inputed-output-face                   ((t (:foreground ,color-9))))
   `(slime-error-face                                 ((((supports :underline (:style wave))) (:underline (:style wave :color ,color-10))) (t (:underline ,color-10))))
   `(slime-warning-face                               ((((supports :underline (:style wave))) (:underline (:style wave :color ,color-11))) (t (:underline ,color-11))))
   `(slime-style-warning-face                         ((((supports :underline (:style wave))) (:underline (:style wave :color ,color-13))) (t (:underline ,color-13))))
   `(slime-note-face                                  ((((supports :underline (:style wave))) (:underline (:style wave :color ,color-9))) (t (:underline ,color-9))))
   `(slime-highlight-face                             ((t (:inherit highlight))))
   ;; speedbar
   `(speedbar-button-face                             ((t (:foreground ,color-11))))
   `(speedbar-directory-face                          ((t (:foreground ,color-12))))
   `(speedbar-file-face                               ((t (:foreground ,color-13))))
   `(speedbar-highlight-face                          ((t (:foreground ,color-5 :background ,color-11))))
   `(speedbar-selected-face                           ((t (:foreground ,color-10))))
   `(speedbar-separator-face                          ((t (:foreground ,color-5 :background ,color-10))))
   `(speedbar-tag-face                                ((t (:foreground ,color-13))))
   ;; tabbar
   `(tabbar-button                                    ((t (:foreground ,color-13 :background ,color-4))))
   `(tabbar-selected                                  ((t (:foreground ,color-13 :background ,color-4 :box (:line-width -1 :style pressed-button)))))
   `(tabbar-unselected                                ((t (:foreground ,color-13 :background ,color-6 :box (:line-width -1 :style released-button)))))
   ;; term
   `(term-color-black                                 ((t (:foreground ,color-5 :background ,color-3))))
   `(term-color-red                                   ((t (:foreground ,color-9 :background ,color-7))))
   `(term-color-green                                 ((t (:foreground ,color-9 :background ,color-11))))
   `(term-color-yellow                                ((t (:foreground ,color-11 :background ,color-13))))
   `(term-color-blue                                  ((t (:foreground ,color-10 :background ,color-7))))
   `(term-color-magenta                               ((t (:foreground ,color-10 :background ,color-10))))
   `(term-color-cyan                                  ((t (:foreground ,color-12 :background ,color-11))))
   `(term-color-white                                 ((t (:foreground ,color-13 :background ,color-7))))
   '(term-default-fg-color                            ((t (:inherit term-color-white))))
   '(term-default-bg-color                            ((t (:inherit term-color-black))))
   ;; undo-tree
   `(undo-tree-visualizer-active-branch-face          ((t (:foreground ,color-14 :weight bold))))
   `(undo-tree-visualizer-current-face                ((t (:foreground ,color-9 :weight bold))))
   `(undo-tree-visualizer-default-face                ((t (:foreground ,color-13))))
   `(undo-tree-visualizer-register-face               ((t (:foreground ,color-13))))
   `(undo-tree-visualizer-unmodified-face             ((t (:foreground ,color-12))))
   ;; volatile-highlights
   `(vhl/default-face                                 ((t (:background ,color-4))))
   ;; emacs-w3m
   `(w3m-anchor                                       ((t (:foreground ,color-12 :background ,color-4 :underline t :weight normal))))
   `(w3m-current-anchor                               ((t (:foreground ,color-1 :background ,color-10 :underline nil :weight bold))))
   `(w3m-arrived-anchor-face                          ((t (:foreground ,color-9 :background ,color-4 :underline t :weight normal))))
   `(w3m-image-anchor-face                            ((t (:foreground ,color-12  :background ,color-5 :underline t :weight normal))))
   `(w3m-image-face                                   ((t (:foreground ,color-11 :background ,color-5 :underline t :weight normal))))
   `(w3m-image-anchor                                 ((t (:foreground ,color-11 :background ,color-5 :underline t :weight normal))))
   `(w3m-form                                         ((t (:foreground ,color-9 :underline t))))
   `(w3m-header-line-location-title                   ((t (:foreground ,color-7 :background ,color-5 :underline nil :weight normal))))
   `(w3m-header-line-location-content                 ((t (:foreground ,color-13 :background ,color-5 :underline nil :weight normal))))
   `(w3m-history-current-url                          ((t (:inherit match))))
   `(w3m-tab-background                               ((t (:foreground ,color-1 :background ,color-9 :underline nil :weight normal))))
   `(w3m-tab-unselected-retrieving                    ((t (:foreground ,color-1 :background ,color-9 :underline nil :weight normal))))
   `(w3m-tab-selected-background-face                 ((t (:foreground ,color-1 :background ,color-11 :underline nil :weight bold))))
   `(w3m-tab-selected-retrieving                      ((t (:foreground ,color-1 :background ,color-11 :underline nil :weight bold))))
   `(w3m-lnum                                         ((t (:foreground ,color-1 :background ,color-9 :underline nil :bold t ))))
   `(w3m-lnum-match                                   ((t (:background ,color-3 :foreground ,color-11 :weight bold))))
   `(w3m-lnum-minibuffer-prompt                       ((t (:foreground ,color-13))))
   ;; css-mode
   `(css-property                                     ((t (:foreground ,color-13))))
   ;; web-mode
   `(web-mode-builtin-face                            ((t (:inherit ,font-lock-builtin-face))))
   `(web-mode-comment-face                            ((t (:inherit ,font-lock-comment-face))))
   `(web-mode-constant-face                           ((t (:inherit ,font-lock-constant-face))))
   `(web-mode-css-at-rule-face                        ((t (:foreground ,color-11 ))))
   `(web-mode-css-prop-face                           ((t (:foreground ,color-11))))
   `(web-mode-css-pseudo-class-face                   ((t (:foreground ,color-12 :weight bold))))
   `(web-mode-css-rule-face                           ((t (:foreground ,color-11))))
   `(web-mode-doctype-face                            ((t (:inherit ,font-lock-comment-face))))
   `(web-mode-folded-face                             ((t (:underline t))))
   `(web-mode-function-name-face                      ((t (:foreground ,color-11))))
   `(web-mode-html-attr-name-face                     ((t (:foreground ,color-8 :italic t))))
   `(web-mode-html-attr-value-face                    ((t (:foreground ,color-8 ))))
   `(web-mode-html-tag-face                           ((t (:foreground ,color-9))))
   `(web-mode-html-tag-bracket-face                   ((t (:foreground ,color-7))))   
   `(web-mode-keyword-face                            ((t (:inherit ,font-lock-keyword-face))))
   `(web-mode-preprocessor-face                       ((t (:inherit ,font-lock-preprocessor-face))))
   `(web-mode-string-face                             ((t (:inherit ,font-lock-string-face))))
   `(web-mode-type-face                               ((t (:inherit ,font-lock-type-face))))
   `(web-mode-variable-name-face                      ((t (:inherit ,font-lock-variable-name-face))))
   `(web-mode-server-background-face                  ((t (:background ,color-4))))
   `(web-mode-server-comment-face                     ((t (:inherit web-mode-comment-face))))
   `(web-mode-server-string-face                      ((t (:inherit web-mode-string-face))))
   `(web-mode-symbol-face                             ((t (:inherit font-lock-constant-face))))
   `(web-mode-warning-face                            ((t (:inherit font-lock-warning-face))))
   `(web-mode-whitespaces-face                        ((t (:background ,color-10))))
   ;; whitespace-mode
   `(whitespace-space                                 ((t (:background ,color-6 :foreground ,color-6))))
   `(whitespace-hspace                                ((t (:background ,color-6 :foreground ,color-6))))
   `(whitespace-tab                                   ((t (:background ,color-9))))
   `(whitespace-newline                               ((t (:foreground ,color-5))))
   `(whitespace-trailing                              ((t (:background ,color-7))))
   `(whitespace-line                                  ((t (:background ,color-4 :foreground ,color-6))))
   `(whitespace-space-before-tab                      ((t (:background ,color-11 :foreground ,color-11))))
   `(whitespace-indentation                           ((t (:background ,color-13 :foreground ,color-10))))
   `(whitespace-empty                                 ((t (:background ,color-13))))
   `(whitespace-space-after-tab                       ((t (:background ,color-13 :foreground ,color-10))))
   ;; wanderlust
   `(wl-highlight-folder-few-face                     ((t (:foreground ,color-9))))
   `(wl-highlight-folder-many-face                    ((t (:foreground ,color-9))))
   `(wl-highlight-folder-path-face                    ((t (:foreground ,color-11))))
   `(wl-highlight-folder-unread-face                  ((t (:foreground ,color-11))))
   `(wl-highlight-folder-zero-face                    ((t (:foreground ,color-13))))
   `(wl-highlight-folder-unknown-face                 ((t (:foreground ,color-11))))
   `(wl-highlight-message-citation-header             ((t (:foreground ,color-9))))
   `(wl-highlight-message-cited-text-1                ((t (:foreground ,color-10))))
   `(wl-highlight-message-cited-text-2                ((t (:foreground ,color-11))))
   `(wl-highlight-message-cited-text-3                ((t (:foreground ,color-11))))
   `(wl-highlight-message-cited-text-4                ((t (:foreground ,color-11))))
   `(wl-highlight-message-header-contents-face        ((t (:foreground ,color-9))))
   `(wl-highlight-message-headers-face                ((t (:foreground ,color-11))))
   `(wl-highlight-message-important-header-contents   ((t (:foreground ,color-11))))
   `(wl-highlight-message-header-contents             ((t (:foreground ,color-10))))
   `(wl-highlight-message-important-header-contents2  ((t (:foreground ,color-11))))
   `(wl-highlight-message-signature                   ((t (:foreground ,color-9))))
   `(wl-highlight-message-unimportant-header-contents ((t (:foreground ,color-13))))
   `(wl-highlight-summary-answered-face               ((t (:foreground ,color-11))))
   `(wl-highlight-summary-disposed-face               ((t (:foreground ,color-13 :slant italic))))
   `(wl-highlight-summary-new-face                    ((t (:foreground ,color-11))))
   `(wl-highlight-summary-normal-face                 ((t (:foreground ,color-13))))
   `(wl-highlight-summary-thread-top-face             ((t (:foreground ,color-13))))
   `(wl-highlight-thread-indent-face                  ((t (:foreground ,color-10))))
   `(wl-highlight-summary-refiled-face                ((t (:foreground ,color-13))))
   `(wl-highlight-summary-displaying-face             ((t (:underline t :weight bold))))
   ;; which-func-mode
   `(which-func                                       ((t (:foreground ,color-11 :bold t :underline t))))
   ;; yascroll
   `(yascroll:thumb-text-area                         ((t (:background ,color-3))))
   `(yascroll:thumb-fringe                            ((t (:background ,color-3 :foreground ,color-3))))
   `(minimap-active-region-background                 ((t (:background ,color-6 :foreground ,color-7))))
   ;; html fold/unfold face
   `(html-fold-unfolded-face                          ((t (:background ,color-4))))
   `(html-fold-folded-face                            ((t (:foreground ,color-14 :bold t))))
   ;; markdown mode
   `(markdown-header-delimiter-face                   ((t (:weight normal :foreground ,color-6))))
   `(markdown-header-face                           ((t (:bold nil :foreground ,color-14))))   
   `(markdown-header-face-1                           ((t (:inherit org-level-1 :foreground ,color-14))))
   `(markdown-header-face-2                           ((t (:inherit org-level-2 :foreground ,color-14))))
   `(markdown-header-face-3                           ((t (:inherit org-level-3 :foreground ,color-14))))
   `(markdown-header-face-4                           ((t (:inherit org-level-4 :foreground ,color-14))))
   `(markdown-header-face-5                           ((t (:inherit org-level-5 :foreground ,color-14))))
   `(markdown-header-face-6                           ((t (:inherit org-level-6 :foreground ,color-14))))
   `(markdown-link-face                               ((t (:underline nil :foreground ,color-13 :height ,(tao-theme-height 1.0)))))
   `(markdown-url-face                                ((t (:underline t :foreground ,color-10))))
   `(markdown-pre-face                                ((t (:inherit org-block :height ,(tao-theme-height 0.8)))))
   `(markdown-language-keyword-face                   ((t (:inherit fixed-pitch :height ,(tao-theme-height 0.8) :background ,color-8 :foreground ,color-1))))
   `(markdown-inline-code-face                         ((t (:inherit fixed-pitch :foreground ,color-13 ))))
   `(markdown-bold-face                                ((t (:foreground ,color-10 :bold t ))))
   `(markdown-italic-face                                ((t (:italic t ))))
   `(markdown-list-face                               ((t (:foreground ,color-12))))
   `(markdown-markup-face                             ((t (:foreground ,color-6 :inherit fixed-pitch))))
   `(markdown-html-attr-name-face                     ((t (:foreground ,color-9 :inherit fixed-pitch))))
   `(markdown-html-attr-value-face                 ((t (:foreground ,color-8 :inherit fixed-pitch))))            
   `(markdown-html-tag-delimiter-face                 ((t (:foreground ,color-8 :inherit fixed-pitch))))
   `(markdown-html-tag-name-face                 ((t (:foreground ,color-9 :inherit fixed-pitch))))
   `(markdown-table-face                              ((t (:inherit fixed-pitch :height ,(tao-theme-height 0.8)))))
   ;; swoop
   `(swoop-face-line-buffer-name                      ((t (:background ,color-9 :foreground ,color-1))))
   `(swoop-face-target-line                           ((t (:background ,color-7 :foreground ,color-12))))
   `(swoop-face-line-number                           ((t (:background ,color-4 :foreground ,color-6))))
   `(swoop-face-header-format-line                    ((t (:background ,color-6 :foreground ,color-1))))
   `(swoop-face-target-words                          ((t (:background ,color-6 :foreground ,color-13))))
   `(highlight-indentation-face                       ((t (:background ,color-5))))
   `(highlight-indentation-current-column-face        ((t (:background ,color-3))))
   ;; company
   `(company-echo-common                              ((t (:foreground ,color-13))))
   `(company-preview                                  ((t (:background ,color-6 :foreground ,color-11))))
   `(company-preview-common                           ((t (:inherit company-preview :foreground ,color-13 :weight bold))))
   `(company-scrollbar-fg                             ((t (:background ,color-7))))
   `(company-tooltip                                  ((t (:background ,color-5 :foreground ,color-11 :inherit fixed-pitch))))
   `(company-tooltip-annotation                       ((t (:inherit company-tooltip :foreground ,color-9 :inherit fixed-pitch))))
   `(company-tooltip-annotation-selection             ((t (:inherit company-tooltip-selection :foreground ,color-9))))
   `(company-tooltip-common                           ((t (:inherit company-tooltip :foreground ,color-11 :inherit fixed-pitch))))
   `(company-tooltip-common-selection                 ((t (:inherit company-tooltip-selection :foreground ,color-13))))
   `(company-tooltip-selection                        ((t (:inherit company-tooltip :background ,color-7 :foreground ,color-1))))
   `(company-scrollbar-bg                             ((t (:inherit company-tooltip))))
   `(company-tooltip-mouse                            ((t (:inherit company-tooltip-selection))))
   ;; eval-sexp-fu
   `(eval-sexp-fu-flash                               ((t (:background ,color-5))))
   `(eval-sexp-fu-flash-error                         ((t (:background ,color-11 :foreground ,color-1))))
   ;; neotree
   `(neo-dir-link-face                                ((t (:inherit diredp-dir-priv))))
   `(neo-expand-btn-face                              ((t (:foreground ,color-11 :bold t))))
   `(neo-file-link-face                               ((t (:foreground ,color-9))))
   `(neo-root-dir-face                                ((t (:foreground ,color-8 :background ,color-2))))
   ;; geiser
   `(geiser-font-lock-doc-link                        ((t (:foreground ,color-11 :underline t))))
   `(geiser-font-lock-error-link                        ((t (:foreground ,color-11 :underline t))))
   `(geiser-font-lock-autodoc-identifier              ((t (:foreground ,color-8 :bold t))))
   `(compilation-error                                ((t (:foreground ,color-12 :underline t :bold t))))
   ;; elixir
   `(elixir-atom-face                                 ((t (:foreground ,color-12 :bold t))))
   ;; tuareg
   `(tuareg-font-lock-operator-face                   ((t (:inherit ,font-lock-variable-name-face))))
   `(tuareg-font-lock-governing-face                  ((t (:inherit ,font-lock-keyword-face))))
   ;; avy
   `(avy-lead-face                                    ((t (:background ,color-8 :foreground ,color-1 :bold t))))
   `(avy-lead-face-0                                  ((t (:background ,color-9  :foreground ,color-1  :bold t))))
   `(avy-lead-face-1                                  ((t (:background ,color-10  :foreground ,color-1 :bold t))))
   `(avy-lead-face-2                                  ((t (:background ,color-11  :foreground ,color-1 :bold t))))
   `(avy-background-face                              ((t (:background ,color-3  :foreground ,color-7 :bold t))))
   ;; ace-window
   `(aw-leading-char-face                             ((t (:background ,color-8 :foreground ,color-1 :bold t))))
   `(aw-background-face                               ((t (:background ,color-3 :foreground ,color-7 :bold t))))
   ;; ivy
   `(ivy-current-match                               ((t ( :background ,color-8  :foreground ,color-1))))
   `(ivy-minibuffer-match-face-1                     ((t ( :foreground ,color-12))))
   `(ivy-minibuffer-match-face-2                     ((t ( :foreground ,color-11 :bold t))))
   `(ivy-minibuffer-match-face-3                     ((t ( :foreground ,color-10 :bold t))))
   `(ivy-minibuffer-match-face-4                     ((t ( :foreground ,color-9 :bold t))))
   ;; info
   `(info-menu-star                                 ((t (:foreground ,color-11 :bold t))))
   ;;hideshowvis
   `(hs-face                                        ((t (:foreground ,color-12 :background ,color-4))))
   `(hs-fringe-face                                 ((t (:foreground ,color-12  :background ,color-4))))
   `(custom-variable-tag                            ((t (:foreground ,color-11 :bold t))))
   `(custom-group-tag                               ((t (:foreground ,color-11 :bold t))))
   `(custom-link                                    ((t (:foreground ,color-13 :bold nil :underline t))))   
   `(custom-face-tag                                ((t (:foreground ,color-13 :bold nil :italic nil))))   
   `(custom-button                                  ((t (:foreground ,color-11 :box t))))   
   `(custom-state                                   ((t (:foreground ,color-7))))   
   `(custom-comment                                 ((t (:foreground ,color-8 :italic t :background ,color-4))))
   `(widget-field                                   ((t (:foreground ,color-8 :italic t :background ,color-4 :box (:color ,color-6)))))      
   `(origami-fold-replacement-face                  ((t (:foreground ,color-9 :bold nil))))
   ;; circe
   `(circe-highlight-nick-face                      ((t (:background ,color-6 :foreground ,color-11 :weight bold))))
   `(circe-prompt-face                              ((t (:foreground ,color-1 :background ,color-9 :inherit fixed-pitch))))
   `(circe-server-face                              ((t (:foreground ,color-8 :italic t))))
   ;; lui
   `(lui-time-stamp-face                            ((t (:foreground ,color-11 :background ,color-4))))
   `(lui-button-face                                ((t (:inherit hover-highlight))))
   ;; racket
   `(racket-keyword-argument-face                   ((t (:inherit ,font-lock-keyword-face))))
   `(racket-selfeval-face                           ((t (:inherit ,font-lock-constant-face))))
   `(highlight-thing                                ((t (:background ,color-5))))
   )

  ;; Theme Variables
  (custom-theme-set-variables
   theme-name
   ;; ansi-color
   `(ansi-color-names-vector [,color-5
                              ,color-10
                              ,color-9
                              ,color-13
                              ,color-11
                              ,color-10
                              ,color-12
                              ,color-13])
   ;; fill-column-indicator
   `(fci-rule-color ,color-4)
   ;; vc-annotate
   `(vc-annotate-color-map
     '(( 20. . ,color-7)
       ( 40. . ,color-8)
       ( 60. . ,color-8)
       ( 80. . ,color-9)
       (100. . ,color-9)
       (120. . ,color-10)
       (140. . ,color-10)
       (160. . ,color-11)
       (180. . ,color-11)
       (200. . ,color-11)
       (220. . ,color-12)
       (240. . ,color-12)
       (260. . ,color-12)
       (280. . ,color-13)
       (300. . ,color-13)
       (320. . ,color-13)
       (340. . ,color-14)
       (360. . ,color-14)))
   `(vc-annotate-very-old-color ,color-10)
   `(vc-annotate-background ,color-3)
   ))

(provide 'tao-theme)

A themes/tao-yang-theme.el => themes/tao-yang-theme.el +57 -0
@@ 0,0 1,57 @@
;;; tao-yang-theme.el --- A light golden mean grayscale color theme.

;; Copyright © 2014 2015 2016 2017 Peter Kosov  <11111000000@email.com>

;; Author: Peter Kosov <11111000000@email.com>
;;
;; Contributors: Jasonm23 <jasonm23@gmail.com>, Steve Purcell (purcell), Jonas Bernoulli (tarsius), Guilherme G. (semente), Tanner Hobson (player1537), Syohei YOSHIDA (syohex), Thibault (thblt)
;;
;; Package-Requires: ((cl-lib "0.5"))
;;
;; URL: http://github.com/11111000000/tao-theme-emacs
;;
;; Version: 1.1.1

;; This program is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.

;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;; GNU General Public License for more details.

;; You should have received a copy of the GNU General Public License
;; along with this program.  If not, see <http://www.gnu.org/licenses/>.

;;; Commentary:
;;
;; A light uncoloured color theme for Emacs.

;;; Code:

(require 'tao-theme)

(deftheme tao-yang "The Tao color theme light")

(tao-with-color-variables
  tao-theme-yang-palette
  (tao-apply-custom-theme 'tao-yang))

;;; Footer

;;;###autoload
(and load-file-name
     (boundp 'custom-theme-load-path)
     (add-to-list 'custom-theme-load-path
                  (file-name-as-directory
                   (file-name-directory load-file-name))))

(provide-theme 'tao-yang)

;; Local Variables:
;; no-byte-compile: t
;; indent-tabs-mode: nil
;; End:
;;; tao-yang-theme.el ends here

A themes/tao-yin-theme.el => themes/tao-yin-theme.el +57 -0
@@ 0,0 1,57 @@
;;; tao-yin-theme.el --- A dark uncoloured color theme.

;; Copyright © 2014 2015 2016 2017 Peter Kosov  <11111000000@email.com>

;; Author: Peter Kosov <11111000000@email.com>
;;
;; Contributors: Jasonm23 <jasonm23@gmail.com>, Steve Purcell (purcell), Jonas Bernoulli (tarsius), Guilherme G. (semente), Tanner Hobson (player1537), Syohei YOSHIDA (syohex), Thibault (thblt)
;;
;; Package-Requires: ((cl-lib "0.5"))
;;
;; URL: http://github.com/11111000000/tao-theme-emacs
;;
;; Version: 1.1.1

;; This program is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.

;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;; GNU General Public License for more details.

;; You should have received a copy of the GNU General Public License
;; along with this program.  If not, see <http://www.gnu.org/licenses/>.

;;; Commentary:

;; A dark uncoloured color theme for Emacs.

;;; Code:

(require 'tao-theme)

(deftheme tao-yin "The Tao color theme dark")

(tao-with-color-variables
  tao-theme-yin-palette
  (tao-apply-custom-theme 'tao-yin))

;;; Footer

;;;###autoload
(and load-file-name
     (boundp 'custom-theme-load-path)
     (add-to-list 'custom-theme-load-path
                  (file-name-as-directory
                   (file-name-directory load-file-name))))

(provide-theme 'tao-yin)

;; Local Variables:
;; no-byte-compile: t
;; indent-tabs-mode: nil
;; End:
;;; tao-yin-theme.el ends here

A themes/white-theme.el => themes/white-theme.el +480 -0
@@ 0,0 1,480 @@
;;; white-theme.el --- Minimalistic light color theme inspired by basic-theme

;; Copyright (c) 2014-2016 Anler Hernandez Peral

;; Author: Anler Hernandez Peral <inbox@anler.me>
;; Keywords: color, theme, minimal, basic, simple, white
;; URL: http://github.com/anler/white-theme.el
;; Package-Requires: ((emacs "24"))

;; This file is not part of GNU Emacs.

;; This file is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 3, or (at your option)
;; any later version.

;; This file is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;; GNU General Public License for more details.

;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING.  If not, write to
;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
;; Boston, MA 02110-1301, USA.

;;; Commentary:

;; The theme attempts to reduce the usage of colors to a minimum based on my
;; personal preferences.  It's not fully monochrome, for example diffs, active
;; regions, comments and keywords are distinguished via colors.

;; More information: http://github.com/anler/white-theme.el

;; Theme setup is based on basic-theme.el available at:
;; https://github.com/fgeller/basic-theme.el

(deftheme white "Minimalistic light color theme inspired by basic-theme.")

(defvar white-theme-colors-alist
  '(("black" . "#181818")
    ("gray1" . "#282828")
    ("gray2" . "#383838")
    ("gray3" . "#585858")
    ("gray4" . "#b8b8b8")
    ("gray5" . "#d8d8d8")
    ("gray6" . "#e8e8e8")
    ("gray7" . "#f8f8f8")
    ("white" . "#ffffff")
    ("red" . "#ab4642")
    ("orange" . "#dc9656")
    ("yellow" . "#f7ca88")
    ("green" . "#a1b56c")
    ("turquoise" . "#86c1b9")
    ("blue" . "#7cafc2")
    ("purple" . "#8331b7")
    ("brown" . "#a16046"))
  "List of base16 colors.")

(defmacro white-theme-with-color-variables (&rest body)
  (declare (indent 0))
  `(let ((class '((class color) (min-colors 89)))
         ,@(mapcar (lambda (cons)
                     (list (intern (car cons)) (cdr cons)))
                   white-theme-colors-alist))
     ,@body))

;;; Theme Faces
(white-theme-with-color-variables
  (custom-theme-set-faces
   'white
   `(button ((t (:foreground ,blue :underline nil :weight normal))))
   `(comint-highlight-input ((t (:foreground nil :background nil))))
   `(comint-highlight-prompt ((t (:foreground nil :background nil))))
   `(compilation-error ((t (:foreground ,white :background ,red))))
   `(compilation-info ((t (:foreground nil :background nil :weight bold))))
   `(compilation-column-number ((t (:foreground ,red :background nil :weight bold))))
   `(compilation-line-number ((t (:foreground ,red :background nil :weight bold))))
   `(compilation-mode-line-exit ((t (:inherit mode-line))))
   `(compilation-mode-line-fail ((t (:inherit mode-line))))
   `(compilation-mode-line-run ((t (:inherit mode-line))))
   `(compilation-warning ((t (:foreground ,white :background ,yellow))))
   `(cursor ((t (:foreground nil :background ,red))))
   `(default ((t (:foreground ,black :background ,white))))
   `(fringe ((t (:foreground ,gray6 :background ,white))))
   `(header-line ((t (:inherit mode-line))))
   `(hi-yellow ((t (:foreground ,red :background ,nil))))
   `(isearch ((t (:foreground nil :background ,gray6))))
   `(isearch-fail ((t (:foreground nil :background ,orange))))
   `(italic ((t (:foreground nil :background nil :underline nil))))
   `(lazy-highlight ((t (:foreground nil :background ,gray6))))
   `(link ((t (:foreground nil :background nil :underline nil))))
   `(link-visited ((t (:foreground nil :background nil :underline nil))))
   `(linum  ((t (:foreground ,gray5 :background ,white))))
   `(match ((t (:foreground nil :background ,gray6))))
   `(minibuffer-prompt ((t (:foreground ,red :background nil))))
   `(mode-line ((t (:foreground ,white :background ,red :box nil))))
   `(mode-line-buffer-id ((t (:weight bold :foreground ,white))))
   `(mode-line-inactive-buffer-id ((t (:weight bold :foreground ,red))))
   `(mode-line-inactive ((t (:foreground ,purple :background ,purple :box nil))))
   `(region ((t (:foreground nil :background ,green))))
   `(secondary-selection ((t (:foreground nil :background ,gray6))))
   `(trailing-whitespace ((t (:foreground nil :background ,red))))
   `(underline ((t (:foreground nil :background nil :underline nil))))

   `(ace-jump-face-background ((t (:foreground ,gray4 :background nil))))
   `(ace-jump-face-foreground ((t (:foreground ,red :background nil))))

   `(anzu-mode-line ((t (:inherit mode-line))))
   `(anzu-replace-highlight ((t (:foreground nil :background ,gray6))))
   `(anzu-replace-to ((t (:foreground ,red :background ,gray6))))

   `(avy-lead-face-0 ((t (:foreground ,red :background nil))))
   `(avy-lead-face-1 ((t (:foreground ,red :background nil))))
   `(avy-lead-face-2 ((t (:foreground ,red :background nil))))
   `(avy-lead-face ((t (:foreground ,red :background nil))))
   `(avy-background-face ((t (:foreground ,gray4))))

   `(custom-face-tag ((t (:foreground nil :background nil))))
   `(custom-visibility ((t (:foreground ,blue :background nil))))
   `(custom-link ((t (:foreground ,blue :background nil))))

   `(diff-added ((t (:foreground ,green :background nil))))
   `(diff-removed ((t (:foreground ,red :background nil))))
   `(diff-context ((t (:foreground ,black :background nil))))
   `(diff-refine-added ((t :inherit diff-added :foreground nil :weight bold)))
   `(diff-refine-change ((t :inherit diff-changed :foreground nil :weight bold)))
   `(diff-refine-removed ((t :inherit diff-removed :foreground nil :weight bold)))
   `(diff-header ((t (:foreground ,black :background nil))))
   `(diff-file-header ((t (:foreground ,black :background nil))))
   `(diff-hunk-header ((t (:foreground ,black :background nil))))

   `(eldoc-highlight-function-argument ((t (:weight normal :foreground ,red :background nil))))

   `(erc-action-face ((t (:foreground ,black :background nil))))
   `(erc-bold-face ((t (:foreground ,black :background nil))))
   `(erc-button ((t (:foreground ,black :background nil))))
   `(erc-command-indicator-face ((t (:foreground ,black :background nil))))
   `(erc-current-nick-face ((t (:foreground ,black :background nil))))
   `(erc-dangerous-host-face ((t (:foreground ,black :background nil))))
   `(erc-default-face ((t (:foreground ,black :background nil))))
   `(erc-direct-msg-face ((t (:foreground ,black :background nil))))
   `(erc-error-face ((t (:foreground ,black :background nil))))
   `(erc-fool-face ((t (:foreground ,black :background nil))))
   `(erc-header-line ((t (:foreground ,black :background nil))))
   `(erc-input-face ((t (:foreground ,black :background nil))))
   `(erc-inverse-face ((t (:foreground ,black :background nil))))
   `(erc-keyword-face ((t (:foreground ,black :background nil))))
   `(erc-my-nick-face ((t (:foreground ,black :background nil))))
   `(erc-nick-default-face ((t (:foreground ,black :background nil))))
   `(erc-nick-msg-face ((t (:foreground ,black :background nil))))
   `(erc-notice-face ((t (:foreground ,black :background nil))))
   `(erc-pal-face ((t (:foreground ,black :background nil))))
   `(erc-prompt-face ((t (:foreground ,black :background nil))))
   `(erc-timestamp-face ((t (:foreground ,black :background nil))))
   `(erc-underline-face ((t (:foreground ,black :background nil))))

   `(eshell-prompt ((t (:foreground ,gray4 :background nil :weight normal))))
   `(eshell-ls-directory ((t (:foreground nil :background nil :weight normal))))
   `(eshell-ls-executable ((t (:foreground nil :background nil :weight normal))))

   `(font-lock-builtin-face ((t :foreground nil :background nil :weight bold)))
   `(font-lock-comment-delimiter-face ((t :foreground ,gray4 :background ,gray7 :slant italic)))
   `(font-lock-comment-face ((t :foreground ,gray4 :background ,gray7 :slant italic)))
   `(font-lock-preprocessor-face ((t :foreground nil :background nil :slant italic)))
   `(font-lock-constant-face ((t :foreground nil :background nil :weight bold :slant italic)))
   `(font-lock-doc-face ((t :foreground nil :background ,gray7 :slant italic)))
   `(font-lock-function-name-face ((t :foreground nil :background nil :weight bold)))
   `(font-lock-keyword-face ((t :foreground ,gray3 :background nil)))
   `(font-lock-negation-char-face ((t :foreground nil :background nil)))
   `(font-lock-regexp-grouping-backslash ((t :foreground nil :background nil)))
   `(font-lock-regexp-grouping-construct ((t :foreground nil :background nil)))
   `(font-lock-string-face ((t :foreground nil :background ,gray7 :slant italic)))
   `(font-lock-type-face ((t :foreground nil :background nil :weight bold)))
   `(font-lock-variable-name-face ((t :foreground nil :background ,gray7)))
   `(font-lock-warning-face ((t :foreground nil :background ,orange)))

   `(helm-action ((t (:foreground ,black :background nil :underline nil))))
   `(helm-candidate-number ((t (:foreground ,gray6 :background ,gray6))))
   `(helm-header ((t (:inherit mode-line))))
   `(helm-selection ((t (:foreground ,black :background ,gray6 :underline nil))))
   `(helm-source-header ((t (:inherit default :foreground ,black :background nil :underline nil :weight normal :family ,(face-attribute 'default :family) :height ,(face-attribute 'default :height)))))
   `(helm-buffer-file ((t (:foreground ,black :background nil :underline nil :italic nil))))
   `(helm-buffer-directory ((t (:foreground ,black :background nil :underline nil :italic nil))))
   `(helm-buffer-process ((t (:foreground ,black :background nil :underline nil :italic nil))))
   `(helm-buffer-size ((t (:foreground ,black :background nil :underline nil :italic nil))))
   `(helm-buffer-not-saved ((t (:foreground ,black :background nil :underline nil :italic nil))))
   `(helm-ff-directory ((t (:foreground ,black :background nil :underline nil :italic nil))))
   `(helm-ff-executable ((t (:foreground ,black :background nil :underline nil :italic nil))))
   `(helm-ff-file ((t (:foreground ,black :background nil :underline nil :italic nil))))
   `(helm-ff-invalid-symlink ((t (:foreground ,black :background ,red :underline nil :italic nil))))
   `(helm-ff-prefix ((t (:foreground ,black :background nil :underline nil :italic nil))))
   `(helm-ff-symlink ((t (:foreground ,black :background nil :underline nil :italic nil))))
   `(helm-history-remote ((t (:foreground ,black :background ,orange :underline nil :italic nil))))
   `(helm-history-deleted ((t (:foreground ,black :background ,red :underline nil :italic nil))))
   `(helm-visible-mark ((t (:foreground ,black :background ,yellow :underline nil :italic nil))))
   `(helm-separator ((t (:foreground ,gray6 :background nil :underline nil :italic nil))))
   `(helm-prefarg ((t (:foreground ,red :background nil :underline nil :italic nil))))
   `(helm-M-x-key ((t (:foreground ,blue :background nil :underline nil :italic nil))))

   ;; js2-mode
   `(js2-error ((t (:foreground ,orange background nil))))
   `(js2-external-variable ((t (:foreground nil background nil))))
   `(js2-function-call ((t (:foreground nil background nil))))
   `(js2-function-param ((t (:foreground nil background nil))))
   `(js2-instance-member ((t (:foreground nil background nil))))
   `(js2-jsdoc-html-tag-delimiter ((t (:foreground nil background nil))))
   `(js2-jsdoc-html-tag-name ((t (:foreground nil background nil))))
   `(js2-jsdoc-tag ((t (:foreground nil background nil))))
   `(js2-jsdoc-type ((t (:foreground nil background nil))))
   `(js2-jsdoc-value ((t (:foreground nil background nil))))
   `(js2-private-function-call ((t (:foreground nil background nil))))
   `(js2-private-member ((t (:foreground nil background nil))))
   `(js2-warning ((t (:foreground ,orange background nil))))

   ;; magit-next
   `(magit-bisect-bad ((t (:foreground nil :background nil))))
   `(magit-bisect-good ((t (:foreground nil :background nil))))
   `(magit-bisect-skip ((t (:foreground nil :background nil))))
   `(magit-blame-date ((t (:foreground nil :background nil))))
   `(magit-blame-hash ((t (:foreground nil :background nil))))
   `(magit-blame-heading ((t (:foreground nil :background nil))))
   `(magit-blame-name ((t (:foreground nil :background nil))))
   `(magit-blame-summary ((t (:foreground nil :background nil))))
   `(magit-branch-current ((t (:foreground nil :background nil))))
   `(magit-branch-local ((t (:foreground nil :background nil))))
   `(magit-branch-remote ((t (:foreground nil :background nil))))
   `(magit-cherry-equivalent ((t (:foreground nil :background nil))))
   `(magit-cherry-unmatched ((t (:foreground nil :background nil))))
   `(magit-diff-added ((t (:foreground ,green :background nil))))
   `(magit-diff-added-highlight ((t (:foreground ,green :background ,gray6))))
   `(magit-diff-conflict-heading ((t (:foreground nil :background nil))))
   `(magit-diff-context ((t (:foreground nil :background nil))))
   `(magit-diff-context-highlight ((t (:foreground nil :background nil))))
   `(magit-diff-file-heading ((t (:foreground nil :background nil))))
   `(magit-diff-file-heading-highlight ((t (:foreground nil :background nil))))
   `(magit-diff-file-heading-selection ((t (:foreground nil :background nil))))
   `(magit-diff-hunk-heading ((t (:foreground nil :background nil))))
   `(magit-diff-hunk-heading-highlight ((t (:foreground nil :background nil))))
   `(magit-diff-hunk-heading-selection ((t (:foreground nil :background nil))))
   `(magit-diff-lines-boundary ((t (:foreground nil :background nil))))
   `(magit-diff-lines-heading ((t (:foreground nil :background nil))))
   `(magit-diff-removed ((t (:foreground ,red :background nil))))
   `(magit-diff-removed-highlight ((t (:foreground ,red :background ,gray6))))
   `(magit-diff-whitespace-warning ((t (:foreground nil :background ,red))))
   `(magit-diffstat-added ((t (:foreground nil :background nil))))
   `(magit-diffstat-removed ((t (:foreground nil :background nil))))
   `(magit-dimmed ((t (:foreground nil :background nil))))
   `(magit-filename ((t (:foreground nil :background nil))))
   `(magit-hash ((t (:foreground nil :background nil))))
   `(magit-head ((t (:foreground nil :background nil))))
   `(magit-log-author ((t (:foreground nil :background nil))))
   `(magit-log-date ((t (:foreground nil :background nil))))
   `(magit-log-graph ((t (:foreground nil :background nil))))
   `(magit-popup-argument ((t (:foreground nil :background nil :weight bold))))
   `(magit-popup-disabled-argument ((t (:foreground nil :background nil))))
   `(magit-popup-header ((t (:foreground nil :background nil))))
   `(magit-popup-key ((t (:foreground nil :background nil))))
   `(magit-popup-option-value ((t (:foreground nil :background nil))))
   `(magit-process-ng ((t (:foreground nil :background ,orange))))
   `(magit-process-ok ((t (:foreground nil :background nil))))
   `(magit-reflog-amend ((t (:foreground nil :background nil))))
   `(magit-reflog-checkout ((t (:foreground nil :background nil))))
   `(magit-reflog-cherry-pick ((t (:foreground nil :background nil))))
   `(magit-reflog-commit ((t (:foreground nil :background nil))))
   `(magit-reflog-merge ((t (:foreground nil :background nil))))
   `(magit-reflog-other ((t (:foreground nil :background nil))))
   `(magit-reflog-rebase ((t (:foreground nil :background nil))))
   `(magit-reflog-remote ((t (:foreground nil :background nil))))
   `(magit-reflog-reset ((t (:foreground nil :background nil))))
   `(magit-refname ((t (:foreground nil :background nil))))
   `(magit-refname-stash ((t (:foreground nil :background nil))))
   `(magit-refname-wip ((t (:foreground nil :background nil))))
   `(magit-section-heading ((t (:foreground nil :background nil))))
   `(magit-section-highlight ((t (:foreground nil :background nil))))
   `(magit-sequence-done ((t (:foreground nil :background nil))))
   `(magit-sequence-drop ((t (:foreground nil :background nil))))
   `(magit-sequence-head ((t (:foreground nil :background nil))))
   `(magit-sequence-onto ((t (:foreground nil :background nil))))
   `(magit-sequence-part ((t (:foreground nil :background nil))))
   `(magit-sequence-pick ((t (:foreground nil :background nil))))
   `(magit-sequence-stop ((t (:foreground nil :background nil))))
   `(magit-signature-bad ((t (:foreground nil :background nil))))
   `(magit-signature-good ((t (:foreground nil :background nil))))
   `(magit-signature-untrusted ((t (:foreground nil :background nil))))
   `(magit-tag ((t (:foreground nil :background nil))))

   ;; "old" magit
   `(magit-section-title ((t (:inherit default))))
   `(magit-item-highlight ((t (:foreground nil :background nil))))
   `(magit-process-ok ((t (:foreground nil :background nil))))
   `(magit-process-ng ((t (:foreground nil :background ,orange))))
   `(magit-branch ((t (:foreground nil :background nil))))
   `(magit-log-sha1 ((t (:foreground ,black :background nil))))
   `(magit-log-author ((t (:foreground ,black :background nil))))
   `(magit-log-head-label-head ((t (:foreground ,black :background nil))))
   `(magit-log-head-label-local ((t (:foreground ,black :background nil))))
   `(magit-log-head-label-default ((t (:foreground ,black :background nil))))
   `(magit-log-head-label-remote ((t (:foreground ,black :background nil))))
   `(magit-log-head-label-tags ((t (:foreground ,black :background nil))))
   `(magit-key-mode-button-face ((t (:foreground ,black :background nil))))
   `(magit-key-mode-header-face ((t (:foreground ,black :background nil))))
   `(magit-key-mode-switch-face ((t (:foreground ,green :background nil))))
   `(magit-diff-merge-current ((t (:foreground ,black :background nil))))
   `(magit-tag ((t (:foreground ,black :background nil))))

   `(message-cited-text ((t (:foreground ,black :background nil :weight normal))))
   `(message-header-cc ((t (:foreground ,black :background nil :weight normal))))
   `(message-header-name ((t (:foreground ,black :background nil :weight normal))))
   `(message-header-newsgroups ((t (:foreground ,black :background nil :weight normal))))
   `(message-header-other ((t (:foreground ,black :background nil :weight normal))))
   `(message-header-subject ((t (:foreground ,black :background nil :weight normal))))
   `(message-header-to ((t (:foreground ,black :background nil :weight normal))))
   `(message-header-xheader ((t (:foreground ,black :background nil :weight normal))))
   `(message-mml ((t (:foreground ,black :background nil :weight normal))))
   `(message-separator ((t (:foreground ,black :background nil :weight normal))))

   `(notmuch-crypto-decryption ((t (:foreground ,black :background nil :weight normal))))
   `(notmuch-crypto-part-header ((t (:foreground ,black :background nil :weight normal))))
   `(notmuch-crypto-signature-bad ((t (:foreground ,black :background nil :weight normal))))
   `(notmuch-crypto-signature-good ((t (:foreground ,black :background nil :weight normal))))
   `(notmuch-crypto-signature-good-key ((t (:foreground ,black :background nil :weight normal))))
   `(notmuch-crypto-signature-unknown ((t (:foreground ,black :background nil :weight normal))))
   `(notmuch-hello-logo-background ((t (:foreground ,black :background nil :weight normal))))
   `(notmuch-message-summary-face ((t (:foreground ,black :background nil :weight normal))))
   `(notmuch-search-count ((t (:foreground ,black :background nil :weight normal))))
   `(notmuch-search-date ((t (:foreground ,black :background nil :weight normal))))
   `(notmuch-search-matching-authors ((t (:foreground ,black :background nil :weight normal))))
   `(notmuch-search-non-matching-authors ((t (:foreground ,black :background nil :weight normal))))
   `(notmuch-search-subject ((t (:foreground ,black :background nil :weight normal))))
   `(notmuch-tag-face ((t (:foreground ,black :background nil :weight normal))))
   `(notmuch-tree-match-author-face ((t (:foreground ,black :background nil :weight normal))))
   `(notmuch-tree-match-date-face ((t (:foreground ,black :background nil :weight normal))))
   `(notmuch-tree-match-face ((t (:foreground ,black :background nil :weight normal))))
   `(notmuch-tree-match-subject-face ((t (:foreground ,black :background nil :weight normal))))
   `(notmuch-tree-match-tag-face ((t (:foreground ,black :background nil :weight normal))))
   `(notmuch-tree-match-tree-face ((t (:foreground ,black :background nil :weight normal))))
   `(notmuch-tree-no-match-author-face ((t (:foreground ,black :background nil :weight normal))))
   `(notmuch-tree-no-match-date-face ((t (:foreground ,black :background nil :weight normal))))
   `(notmuch-tree-no-match-face ((t (:foreground ,black :background nil :weight normal))))
   `(notmuch-tree-no-match-subject-face ((t (:foreground ,black :background nil :weight normal))))
   `(notmuch-tree-no-match-tag-face ((t (:foreground ,black :background nil :weight normal))))
   `(notmuch-tree-no-match-tree-face ((t (:foreground ,black :background nil :weight normal))))
   `(notmuch-wash-cited-text ((t (:foreground ,black :background nil :weight normal))))
   `(notmuch-wash-toggle-button ((t (:foreground ,black :background nil :weight normal))))

   `(org-agenda-calendar-event ((t (:foreground ,black :background nil :weight normal))))
   `(org-agenda-calendar-sexp ((t (:foreground ,black :background nil :weight normal))))
   `(org-agenda-clocking ((t (:foreground ,black :background nil :weight normal))))
   `(org-agenda-column-dateline ((t (:foreground ,black :background nil :weight normal))))
   `(org-agenda-current-time ((t (:foreground ,black :background nil :weight normal))))
   `(org-agenda-date ((t (:foreground ,black :background nil :weight normal))))
   `(org-agenda-date-today ((t (:foreground ,black :background nil :weight normal))))
   `(org-agenda-date-weekend ((t (:foreground ,black :background nil :weight normal))))
   `(org-agenda-diary ((t (:foreground ,black :background nil :weight normal))))
   `(org-agenda-dimmed-todo-face ((t (:foreground ,black :background nil :weight normal))))
   `(org-agenda-done ((t (:foreground ,black :background nil :weight normal))))
   `(org-agenda-filter-category ((t (:foreground ,black :background nil :weight normal))))
   `(org-agenda-filter-regexp ((t (:foreground ,black :background nil :weight normal))))
   `(org-agenda-filter-tags ((t (:foreground ,black :background nil :weight normal))))
   `(org-agenda-restriction-lock ((t (:foreground ,black :background nil :weight normal))))
   `(org-agenda-structure ((t (:foreground ,black :background nil :weight normal))))
   `(org-archived ((t (:foreground ,black :background nil :weight normal))))
   `(org-block ((t (:foreground ,black :background nil :weight normal))))
   `(org-block-background ((t (:foreground ,black :background nil :weight normal))))
   `(org-block-begin-line ((t (:foreground ,black :background nil :weight normal))))
   `(org-block-end-line ((t (:foreground ,black :background nil :weight normal))))
   `(org-checkbox ((t (:foreground ,black :background nil :weight normal))))
   `(org-checkbox-statistics-done ((t (:foreground ,black :background nil :weight normal))))
   `(org-checkbox-statistics-todo ((t (:foreground ,black :background nil :weight normal))))
   `(org-clock-overlay ((t (:foreground ,black :background nil :weight normal))))
   `(org-code ((t (:foreground ,black :background nil :weight normal))))
   `(org-column ((t (:foreground ,black :background nil :weight normal))))
   `(org-column-title ((t (:foreground ,black :background nil :weight normal))))
   `(org-date ((t (:foreground ,black :background nil :weight normal))))
   `(org-date-selected ((t (:foreground ,black :background nil :weight normal))))
   `(org-default ((t (:foreground ,black :background nil :weight normal))))
   `(org-document-info ((t (:foreground ,black :background nil :weight normal))))
   `(org-document-info-keyword ((t (:foreground ,black :background nil :weight normal))))
   `(org-document-title ((t (:foreground ,black :background nil :weight normal))))
   `(org-done ((t (:foreground ,black :background nil :weight normal))))
   `(org-drawer ((t (:foreground ,black :background nil :weight normal))))
   `(org-ellipsis ((t (:foreground ,black :background nil :weight normal))))
   `(org-footnote ((t (:foreground ,black :background nil :weight normal))))
   `(org-formula ((t (:foreground ,black :background nil :weight normal))))
   `(org-headline-done ((t (:foreground ,black :background nil :weight normal))))
   `(org-hide ((t (:foreground ,black :background nil :weight normal))))
   `(org-latex-and-related ((t (:foreground ,black :background nil :weight normal))))
   `(org-level-1 ((t (:foreground ,black :background nil :weight normal))))
   `(org-level-2 ((t (:foreground ,black :background nil :weight normal))))
   `(org-level-3 ((t (:foreground ,black :background nil :weight normal))))
   `(org-level-4 ((t (:foreground ,black :background nil :weight normal))))
   `(org-level-5 ((t (:foreground ,black :background nil :weight normal))))
   `(org-level-6 ((t (:foreground ,black :background nil :weight normal))))
   `(org-level-7 ((t (:foreground ,black :background nil :weight normal))))
   `(org-level-8 ((t (:foreground ,black :background nil :weight normal))))
   `(org-link ((t (:foreground ,black :background nil :underline t :weight normal))))
   `(org-list-dt ((t (:foreground ,black :background nil :weight normal))))
   `(org-macro ((t (:foreground ,black :background nil :weight normal))))
   `(org-meta-line ((t (:foreground ,black :background nil :weight normal))))
   `(org-mode-line-clock ((t (:inherit modeline))))
   `(org-mode-line-clock-overrun ((t (:inherit modeline))))
   `(org-priority ((t (:foreground ,black :background nil :weight normal))))
   `(org-property-value ((t (:foreground ,black :background nil :weight normal))))
   `(org-quote ((t (:foreground ,black :background nil :weight normal))))
   `(org-scheduled ((t (:foreground ,black :background nil :weight normal))))
   `(org-scheduled-previously ((t (:foreground ,black :background nil :weight normal))))
   `(org-scheduled-today ((t (:foreground ,black :background nil :weight normal))))
   `(org-sexp-date ((t (:foreground ,black :background nil :weight normal))))
   `(org-special-keyword ((t (:foreground ,black :background nil :weight normal))))
   `(org-table ((t (:foreground ,black :background nil :weight normal))))
   `(org-tag ((t (:foreground ,black :background nil :weight normal))))
   `(org-tag-group ((t (:foreground ,black :background nil :weight normal))))
   `(org-target ((t (:foreground ,black :background nil :weight normal))))
   `(org-time-grid ((t (:foreground ,black :background nil :weight normal))))
   `(org-todo ((t (:foreground ,black :background nil :weight normal))))
   `(org-upcoming-deadline ((t (:foreground ,black :background nil :weight normal))))
   `(org-verbatim ((t (:foreground ,black :background nil :weight normal))))
   `(org-verse ((t (:foreground ,black :background nil :weight normal))))
   `(org-warning ((t (:foreground ,black :background nil :weight normal))))

   `(rng-error ((t (:foreground nil :background ,orange))))

   `(show-paren-match ((t (:foreground nil :background ,green))))
   `(show-paren-mismatch ((t (:foreground nil :background ,orange))))

   `(shr-link ((t (:foreground ,blue :background nil :weight normal :underline nil))))
   `(shr-strike-through ((t (:foreground nil :background nil :weight normal :strike-through t))))

   `(wgrep-face ((t (:foreground ,green :background nil))))
   `(wgrep-done-face ((t (:foreground ,black :background nil))))

   `(racket-keyword-argument-face ((t (:inherit font-lock-constant-face))))
   `(racket-selfeval-face ((t (:inherit font-lock-type-face))))
   ))

(white-theme-with-color-variables
  (custom-theme-set-variables
   'white
   `(ansi-color-names-vector [
                              (,black . ,gray1)
                              (,red . ,orange)
                              (,green . ,gray2)
                              (,yellow . ,gray2)
                              (,blue . ,gray3)
                              (,red . ,gray4)
                              (,turquoise . ,gray5)
                              (,white . ,white)
                              ])
   `(vc-annotate-very-old-color ,gray3)
   `(vc-annotate-background ,white)
   `(vc-annotate-color-map
     '((20 . ,red)
       (50 . ,orange)
       (80 . ,yellow)
       (110 . ,green)
       (140 . ,turquoise)
       (170 . ,blue)
       (200 . ,red)
       (230 . ,brown)
       (260 . ,black)
       (290 . ,gray1)
       (320 . ,gray2)
       (350 . ,gray3)))
   ))

;;;###autoload
(and load-file-name
     (boundp 'custom-theme-load-path)
     (add-to-list 'custom-theme-load-path
                  (file-name-as-directory
                   (file-name-directory load-file-name))))

(provide-theme 'white)

;; Local Variables:
;; no-byte-compile: t
;; indent-tabs-mode: nil
;; End:
;;; white-theme.el ends here