| 1 | ;;; tango-dark-theme.el --- Tango-based custom theme for faces |
| 2 | |
| 3 | ;; Copyright (C) 2010-2015 Free Software Foundation, Inc. |
| 4 | |
| 5 | ;; Authors: Chong Yidong <cyd@stupidchicken> |
| 6 | ;; Jan Moringen <jan.moringen@uni-bielefeld.de> |
| 7 | |
| 8 | ;; This file is part of GNU Emacs. |
| 9 | |
| 10 | ;; GNU Emacs is free software: you can redistribute it and/or modify |
| 11 | ;; it under the terms of the GNU General Public License as published by |
| 12 | ;; the Free Software Foundation, either version 3 of the License, or |
| 13 | ;; (at your option) any later version. |
| 14 | |
| 15 | ;; GNU Emacs is distributed in the hope that it will be useful, |
| 16 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 17 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 18 | ;; GNU General Public License for more details. |
| 19 | |
| 20 | ;; You should have received a copy of the GNU General Public License |
| 21 | ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
| 22 | |
| 23 | ;;; Commentary |
| 24 | |
| 25 | ;; The colors in this theme come from the Tango palette, which is in |
| 26 | ;; the public domain: http://tango.freedesktop.org/ |
| 27 | |
| 28 | ;;; Code: |
| 29 | |
| 30 | (deftheme tangomod-dark |
| 31 | "Face colors using the Tango palette (dark background). |
| 32 | Basic, Font Lock, Isearch, Gnus, Message, Ediff, Flyspell, |
| 33 | Semantic, and Ansi-Color faces are included.") |
| 34 | |
| 35 | (let ((class '((class color) (min-colors 89))) |
| 36 | ;; Tango palette colors. |
| 37 | (butter-1 "#fce94f") (butter-2 "#edd400") (butter-3 "#c4a000") |
| 38 | (orange-1 "#fcaf3e") (orange-2 "#f57900") (orange-3 "#ce5c00") |
| 39 | (choc-1 "#e9b96e") (choc-2 "#c17d11") (choc-3 "#8f5902") |
| 40 | (cham-1 "#8ae234") (cham-2 "#73d216") (cham-3 "#4e9a06") |
| 41 | (blue-1 "#729fcf") (blue-2 "#3465a4") (blue-3 "#204a87") |
| 42 | (plum-1 "#e090d7") (plum-2 "#75507b") (plum-3 "#5c3566") |
| 43 | (red-1 "#ef2929") (red-2 "#cc0000") (red-3 "#a40000") |
| 44 | (alum-1 "#eeeeec") (alum-2 "#d3d7cf") (alum-3 "#babdb6") |
| 45 | (alum-4 "#888a85") (alum-5 "#555753") (alum-6 "#2e3436") |
| 46 | ;; Not in Tango palette; used for better contrast. |
| 47 | (cham-0 "#b4fa70") (blue-0 "#8cc4ff") (plum-0 "#e9b2e3") |
| 48 | (red-0 "#ff4b4b") (alum-5.5 "#41423f") (alum-7 "#212526")) |
| 49 | |
| 50 | (custom-theme-set-faces |
| 51 | 'tangomod-dark |
| 52 | ;; Ensure sufficient contrast on low-color terminals. |
| 53 | `(default ((((class color) (min-colors 4096)) |
| 54 | (:foreground ,alum-1 :background ,alum-6)) |
| 55 | (((class color) (min-colors 256)) |
| 56 | (:foreground ,alum-1 :background "#222")) |
| 57 | (,class |
| 58 | (:foreground ,alum-1 :background "black")))) |
| 59 | `(cursor ((,class (:background ,butter-1)))) |
| 60 | ;; Highlighting faces |
| 61 | `(fringe ((,class (:background ,alum-7)))) |
| 62 | `(highlight ((,class (:foreground ,alum-6 :background ,butter-2)))) |
| 63 | `(region ((,class (:background ,alum-5)))) |
| 64 | `(secondary-selection ((,class (:background ,blue-3)))) |
| 65 | `(isearch ((,class (:foreground ,alum-1 :background ,orange-3)))) |
| 66 | `(lazy-highlight ((,class (:background ,choc-3)))) |
| 67 | `(trailing-whitespace ((,class (:background ,red-3)))) |
| 68 | ;; Paren face |
| 69 | `(show-paren-match ((,class (:background ,blue-3)))) |
| 70 | ;; Mode line faces |
| 71 | `(mode-line ((,class |
| 72 | ;; (:box (:line-width -1 :style released-button) |
| 73 | (:background ,alum-2 :foreground ,alum-6)))) |
| 74 | `(mode-line-inactive ((,class |
| 75 | ;; (:box (:line-width -1 :style released-button) |
| 76 | (:background ,alum-5 :foreground ,alum-1)))) |
| 77 | `(compilation-mode-line-fail ((,class (:foreground ,red-3)))) |
| 78 | `(compilation-mode-line-run ((,class (:foreground ,orange-3)))) |
| 79 | `(compilation-mode-line-exit ((,class (:foreground ,cham-3)))) |
| 80 | ;; Escape and prompt faces |
| 81 | `(minibuffer-prompt ((,class (:foreground ,cham-0)))) |
| 82 | `(escape-glyph ((,class (:foreground ,butter-3)))) |
| 83 | `(error ((,class (:foreground ,red-0)))) |
| 84 | `(warning ((,class (:foreground ,orange-1)))) |
| 85 | `(success ((,class (:foreground ,cham-1)))) |
| 86 | ;; Font lock faces |
| 87 | `(font-lock-builtin-face ((,class (:foreground ,cham-3)))) |
| 88 | `(font-lock-comment-face ((,class (:slant italic :foreground ,alum-3)))) |
| 89 | ;; `(font-lock-comment-face ((,class (:foreground ,cham-2)))) |
| 90 | `(font-lock-constant-face ((,class (:weight bold :foreground ,plum-0)))) |
| 91 | `(font-lock-function-name-face ((,class (:foreground ,butter-1)))) |
| 92 | `(font-lock-keyword-face ((,class (:foreground ,cham-0)))) |
| 93 | `(font-lock-string-face ((,class (:foreground ,choc-1)))) |
| 94 | `(font-lock-type-face ((,class (:foreground ,blue-0)))) |
| 95 | `(font-lock-variable-name-face ((,class (:foreground ,orange-1)))) |
| 96 | `(font-lock-negation-char-face ((,class (:weight bold)))) |
| 97 | ;; Button and link faces |
| 98 | `(link ((,class (:underline t :foreground ,blue-1)))) |
| 99 | `(link-visited ((,class (:underline t :foreground ,blue-2)))) |
| 100 | ;; Gnus faces |
| 101 | `(gnus-group-news-1 ((,class (:foreground ,plum-1)))) |
| 102 | `(gnus-group-news-1-low ((,class (:foreground ,plum-2)))) |
| 103 | `(gnus-group-news-2 ((,class (:foreground ,blue-1)))) |
| 104 | `(gnus-group-news-2-low ((,class (:foreground ,blue-2)))) |
| 105 | `(gnus-group-news-3 ((,class (:foreground ,cham-1)))) |
| 106 | `(gnus-group-news-3-low ((,class (:foreground ,cham-2)))) |
| 107 | `(gnus-group-news-4 ((,class (:foreground ,plum-0)))) |
| 108 | `(gnus-group-news-4-low ((,class (:foreground ,choc-2)))) |
| 109 | `(gnus-group-news-5 ((,class (:foreground ,orange-1)))) |
| 110 | `(gnus-group-news-5-low ((,class (:foreground ,orange-2)))) |
| 111 | `(gnus-group-news-low ((,class (:foreground ,butter-2)))) |
| 112 | `(gnus-group-mail-1 ((,class (:foreground ,plum-1)))) |
| 113 | `(gnus-group-mail-1-low ((,class (:foreground ,plum-2)))) |
| 114 | `(gnus-group-mail-2 ((,class (:foreground ,blue-1)))) |
| 115 | `(gnus-group-mail-2-low ((,class (:foreground ,blue-2)))) |
| 116 | `(gnus-group-mail-3 ((,class (:foreground ,cham-1)))) |
| 117 | `(gnus-group-mail-3-low ((,class (:foreground ,cham-2)))) |
| 118 | `(gnus-group-mail-low ((,class (:foreground ,butter-2)))) |
| 119 | `(gnus-header-content ((,class (:weight normal :foreground ,butter-3)))) |
| 120 | `(gnus-header-from ((,class (:foreground ,butter-2)))) |
| 121 | `(gnus-header-subject ((,class (:foreground ,cham-1)))) |
| 122 | `(gnus-header-name ((,class (:foreground ,blue-1)))) |
| 123 | `(gnus-header-newsgroups ((,class (:foreground ,choc-2)))) |
| 124 | ;; Message faces |
| 125 | `(message-header-name ((,class (:foreground ,blue-1)))) |
| 126 | `(message-header-cc ((,class (:foreground ,butter-3)))) |
| 127 | `(message-header-other ((,class (:foreground ,choc-2)))) |
| 128 | `(message-header-subject ((,class (:foreground ,cham-1)))) |
| 129 | `(message-header-to ((,class (:foreground ,butter-2)))) |
| 130 | `(message-cited-text ((,class (:foreground ,cham-1)))) |
| 131 | `(message-separator ((,class (:foreground ,plum-1)))) |
| 132 | ;; SMerge faces |
| 133 | `(smerge-refined-change ((,class (:background ,blue-3)))) |
| 134 | ;; Ediff faces |
| 135 | `(ediff-current-diff-A ((,class (:background ,alum-5)))) |
| 136 | `(ediff-fine-diff-A ((,class (:background ,blue-3)))) |
| 137 | `(ediff-even-diff-A ((,class (:background ,alum-5.5)))) |
| 138 | `(ediff-odd-diff-A ((,class (:background ,alum-5.5)))) |
| 139 | `(ediff-current-diff-B ((,class (:background ,alum-5)))) |
| 140 | `(ediff-fine-diff-B ((,class (:background ,choc-3)))) |
| 141 | `(ediff-even-diff-B ((,class (:background ,alum-5.5)))) |
| 142 | `(ediff-odd-diff-B ((,class (:background ,alum-5.5)))) |
| 143 | ;; Flyspell faces |
| 144 | `(flyspell-duplicate ((,class (:underline ,orange-1)))) |
| 145 | `(flyspell-incorrect ((,class (:underline ,red-1)))) |
| 146 | ;; Semantic faces |
| 147 | `(semantic-decoration-on-includes ((,class (:underline ,alum-4)))) |
| 148 | `(semantic-decoration-on-private-members-face |
| 149 | ((,class (:background ,plum-3)))) |
| 150 | `(semantic-decoration-on-protected-members-face |
| 151 | ((,class (:background ,choc-3)))) |
| 152 | `(semantic-decoration-on-unknown-includes |
| 153 | ((,class (:background ,red-3)))) |
| 154 | `(semantic-decoration-on-unparsed-includes |
| 155 | ((,class (:background ,alum-5.5)))) |
| 156 | `(semantic-tag-boundary-face ((,class (:overline ,blue-1)))) |
| 157 | `(semantic-unmatched-syntax-face ((,class (:underline ,red-1))))) |
| 158 | |
| 159 | (custom-theme-set-variables |
| 160 | 'tangomod-dark |
| 161 | `(ansi-color-names-vector [,alum-7 ,red-0 ,cham-0 ,butter-1 |
| 162 | ,blue-1 ,plum-1 ,blue-0 ,alum-1]))) |
| 163 | |
| 164 | (provide-theme 'tangomod-dark) |
| 165 | |
| 166 | ;; Local Variables: |
| 167 | ;; no-byte-compile: t |
| 168 | ;; End: |
| 169 | |
| 170 | ;;; tangomod-dark-theme.el ends here |