└── birds-of-paradise-theme.el /birds-of-paradise-theme.el: -------------------------------------------------------------------------------- 1 | ;;; birds-of-paradise-theme.el --- custom theme for faces 2 | 3 | ;; Copyright (C) 2011, 2012, 2013, 2015 Paul M. Rodriguez 4 | 5 | ;; Author: Paul M. Rodriguez 6 | ;; Version: 0.3 7 | 8 | ;; This file is not 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 . 22 | 23 | ;;; Commentary 24 | 25 | ;; This theme is a port of Joseph Bergantine's "Birds of Paradise" 26 | ;; theme for Panic Coda, released under the BSD license: 27 | ;; http://joebergantine.com/werkstatt/birds-of-paradise. 28 | 29 | ;; The font-lock and diff colors are taken from Bergantine's own 30 | ;; TextMate port. (I have changed the warning face to one I find less 31 | ;; painful.) Colors for `nxml-mode' are from the Panic Coda version. 32 | ;; Colors for `whitespace-mode' and `elscreen' are by Jim Myhrberg 33 | ;; . The 34 | ;; rest are mine. 35 | 36 | ;;; Code: 37 | 38 | (deftheme birds-of-paradise 39 | "Port of the brown-based warm light-on-dark theme by Joe Bergantine.") 40 | 41 | (let ((brown-1 "#372725") (brown-2 "#6B4E32") (brown-3 "#2A1D1D") 42 | (brown-4 "#523D2B") (brown-5 "#7D504A") 43 | (brown-6 "#523E2B") (brown-7 "#e2c991") 44 | (brown-8 "#DDAA6E") (brown-9 "#865C38") 45 | (white-1 "#E6E1C4") (white-2 "#E6E1DC") 46 | (black-1 "#1F1611") (black-2 "#16120E") 47 | (gray-1 "gray25") 48 | (yellow-1 "#D9D762") (yellow-2 "#EFAC32") (yellow-3 "#EFCB43") 49 | (yellow-4 "#EFC232") (yellow-5 "#FFC05C") 50 | (orange-1 "#EF5D32") (orange-2 "#CC762E") (orange-3 "#C74725") 51 | (orange-4 "#EB7300") 52 | (red-1 "#990000") (red-2 "#660000") (red-3 "#CC4232") 53 | (red-4 "#BE3250") (red-5 "#D23850") 54 | (red-6 "firebrick4") (red-7 "#bb4949") 55 | (blue-1 "#7DAF9C") (blue-2 "#6C99BB") (blue-3 "#5798AE") 56 | (blue-4 "#93C1BC") (blue-5 "#2F33AB") 57 | (purple-1 "#BB99BB") (purple-2 "#8856D2") (purple-3 "#BE73FD") 58 | (purple-4 "#f0898f") 59 | (green-1 "#144212") (green-2 "SeaGreen")) 60 | (require 'outline) 61 | (custom-theme-set-faces 62 | 'birds-of-paradise 63 | `(default ((t (:background ,brown-1 :foreground ,white-1)))) 64 | `(cursor ((t (:foreground ,brown-2 :background ,white-1)))) 65 | `(fringe ((t (:background ,gray-1)))) 66 | `(highlight ((t (:background ,black-1 :foreground ,white-1)))) 67 | `(region ((t (:background ,black-2)))) 68 | '(cua-rectangle ((t (:inherit region)))) 69 | '(italic ((t (:italic t)))) 70 | `(font-lock-builtin-face ((t (:foreground ,blue-2)))) 71 | `(font-lock-comment-face ((t (:italic t :foreground ,brown-9)))) 72 | `(font-lock-comment-delimiter-face ((t (:inherit font-lock-comment-face)))) 73 | `(parenthesis ((t (:italic nil :foreground ,brown-2)))) 74 | `(font-lock-constant-face ((t (:foreground ,blue-2)))) 75 | `(font-lock-doc-face ((t (:inherit font-lock-comment-face)))) 76 | `(font-lock-function-name-face ((t (:foreground ,yellow-2)))) 77 | `(font-lock-keyword-face ((t (:foreground ,orange-1)))) 78 | `(font-lock-negation-char-face ((t (:foreground ,blue-1)))) 79 | `(font-lock-preprocessor-face ((t (:foreground ,red-4)))) 80 | `(font-lock-string-face ((t (:foreground ,yellow-1)))) 81 | `(font-lock-type-face ((t (:bold t :foreground ,yellow-2)))) 82 | `(font-lock-variable-name-face ((t (:foreground ,blue-1)))) 83 | `(error ((t (:foreground ,purple-1 :weight bold)))) 84 | `(font-lock-warning-face ((t (:inherit error)))) 85 | `(warning ((t (:foreground ,orange-2)))) 86 | '(isearch ((t (:inherit highlight :underline t)))) 87 | '(isearch-fail ((t (:inherit font-lock-warning-face)))) 88 | `(match ((t (:background ,blue-1)))) 89 | '(lazy-highlight ((t (:inherit highlight)))) 90 | '(diff-context ((t (:inherit default)))) 91 | `(diff-header ((t (:background ,blue-5)))) 92 | `(diff-added ((t (:background ,green-1 :foreground ,white-2)))) 93 | `(diff-removed ((t (:background ,red-2 :foreground ,white-2)))) 94 | `(escape-glyph ((t (:foreground ,purple-3)))) 95 | `(minibuffer-prompt ((t (:foreground ,blue-2)))) 96 | `(ido-only-match ((t (:foreground ,orange-1)))) 97 | `(ido-subdir ((t (:foreground ,yellow-2)))) 98 | `(flyspell-incorrect ((t (:underline ,red-6)))) 99 | `(flyspell-duplicate ((t (:underline ,red-6)))) 100 | `(speck-guess ((t (:underline ,red-6)))) 101 | `(speck-miss ((t (:underline ,orange-4)))) 102 | `(speck-doublet ((t (:underline ,purple-1)))) 103 | `(speck-mouse ((t (:background ,purple-1)))) 104 | `(speck-mode-line-specking ((t (:foreground ,brown-7)))) 105 | `(speck-mode-line-specked ((t (:foreground ,orange-4)))) 106 | `(pabbrev-suggestions-face ((t (:foreground ,brown-7)))) 107 | `(pabbrev-single-suggestion-face ((t (:foreground ,orange-4)))) 108 | `(whitespace-newline ((t (:foreground ,brown-6)))) 109 | `(whitespace-hspace ((t (:foreground ,brown-6)))) 110 | `(whitespace-space ((t (:foreground ,brown-6)))) 111 | `(whitespace-tab ((t (:foreground ,brown-6)))) 112 | `(whitespace-line ((t (:background ,gray-1)))) 113 | `(whitespace-indentation ((t (:foreground ,brown-6)))) 114 | `(whitespace-space-after-tab ((t (:foreground ,brown-6)))) 115 | `(magit-diff-add ((t (:foreground ,green-2)))) 116 | `(magit-diff-del ((t (:foreground ,red-7)))) 117 | `(magit-item-highlight ((t (:background ,brown-6)))) 118 | `(elscreen-tab-background-face ((t (:background ,brown-3)))) 119 | `(elscreen-tab-control-face ((t (:background ,brown-2 :foreground ,white-1 :underline nil)))) 120 | `(elscreen-tab-current-screen-face ((t (:background ,brown-2 :foreground ,white-1)))) 121 | `(elscreen-tab-other-screen-face ((t (:background ,brown-3 :foreground ,white-1 :underline nil)))) 122 | '(trailing-whitespace ((t (:inherit font-lock-warning-face)))) 123 | '(show-paren-match ((t (:inherit highlight)))) 124 | '(show-paren-mismatch ((t (:inherit font-lock-warning-face)))) 125 | `(slime-error-face ((t (:underline ,purple-1)))) 126 | `(slime-repl-inputed-output-face ((t (:foreground ,orange-4)))) 127 | `(column-marker-1 ((t (:background ,brown-6)))) 128 | `(button ((t (:foreground ,yellow-1 :background ,blue-1 :weight bold :underline t)))) 129 | `(link ((t (:foreground ,yellow-1 :underline nil)))) 130 | `(link-visited ((t (:foreground ,blue-3 :underline nil)))) 131 | `(mode-line ((t (:background ,brown-2 :foreground ,white-1)))) 132 | `(mode-line-inactive ((t (:background ,gray-1 :foreground ,white-1)))) 133 | `(which-func ((t (:foreground ,yellow-2)))) 134 | `(header-line ((t (:background ,black-1 :foreground ,white-1)))) 135 | '(font-latex-warning-face ((t :inherit font-lock-warning-face))) 136 | `(gnus-group-news-1 ((t (:foreground ,yellow-1 :weight bold)))) 137 | `(gnus-group-news-1-empty ((t (:foreground ,yellow-1)))) 138 | `(gnus-group-news-2 ((t (:foreground ,orange-1 :weight bold)))) 139 | `(gnus-group-news-2-empty ((t (:foreground ,orange-1)))) 140 | `(gnus-group-news-3 ((t (:foreground ,red-3 :weight bold)))) 141 | `(gnus-group-news-3-empty ((t (:foreground ,red-3)))) 142 | `(gnus-group-news-4 ((t (:foreground ,purple-1 :weight bold)))) 143 | `(gnus-group-news-4-empty ((t (:foreground ,purple-1)))) 144 | `(gnus-group-news-5 ((t (:foreground ,blue-1 :weight bold)))) 145 | `(gnus-group-news-5-empty ((t (:foreground ,blue-1)))) 146 | `(gnus-group-news-6 ((t (:foreground ,blue-2 :weight bold)))) 147 | `(gnus-group-news-6-empty ((t (:foreground ,blue-2)))) 148 | `(gnus-group-news-low ((t (:foreground ,brown-2 :italic t)))) 149 | `(gnus-group-news-low-empty ((t (:foreground ,brown-2)))) 150 | `(gnus-group-mail-1 ((t (:foreground ,yellow-1 :weight bold)))) 151 | `(gnus-group-mail-1-empty ((t (:foreground ,yellow-1)))) 152 | `(gnus-group-mail-2 ((t (:foreground ,orange-1 :weight bold)))) 153 | `(gnus-group-mail-2-empty ((t (:foreground ,orange-1 :weight bold)))) 154 | `(gnus-group-mail-3 ((t (:foreground ,red-3 :weight bold)))) 155 | `(gnus-group-mail-3-empty ((t (:foreground ,red-3)))) 156 | `(gnus-group-mail-low ((t (:foreground ,brown-2 :italic t)))) 157 | `(gnus-group-mail-low-empty ((t (:foreground ,brown-2)))) 158 | '(gnus-header-content ((t (:inherit message-header-other)))) 159 | '(gnus-header-from ((t (:inherit message-header-from)))) 160 | '(gnus-header-name ((t (:inherit message-header-name)))) 161 | '(gnus-header-newsgroups ((t (:inherit message-header-other)))) 162 | '(gnus-header-subject ((t (:inherit message-header-subject)))) 163 | `(gnus-header-newsgroups ((t (:foreground ,yellow-2)))) 164 | `(gnus-summary-high-ticked ((t :foreground ,purple-4))) 165 | `(gnus-summary-high-read ((t :foreground ,brown-7))) 166 | `(gnus-summary-high-unread ((t :foreground ,yellow-1))) 167 | `(gnus-summary-high-ancient ((t :foreground "gray75"))) 168 | `(gnus-summary-normal-ticked ((t :foreground ,red-3))) 169 | `(gnus-summary-normal-read ((t :foreground ,brown-8))) 170 | `(gnus-summary-normal-unread ((t :foreground ,orange-1))) 171 | `(gnus-summary-normal-ancient ((t :foreground "gray50"))) 172 | `(gnus-summary-low-ticked ((t :foreground ,blue-2))) 173 | `(gnus-summary-low-read ((t :foreground ,brown-2))) 174 | `(gnus-summary-low-unread ((t :foreground ,red-3))) 175 | `(gnus-summary-low-ancient ((t :foreground ,gray-1))) 176 | `(message-header-name ((t (:foreground ,orange-1)))) 177 | `(message-header-from ((t (:foreground ,yellow-1)))) 178 | `(message-header-cc ((t (:foreground ,brown-2)))) 179 | `(message-header-other ((t (:foreground ,brown-2)))) 180 | `(message-header-subject ((t (:foreground ,white-1)))) 181 | `(message-header-to ((t (:foreground ,white-1)))) 182 | `(message-cited-text ((t (:foreground ,yellow-2)))) 183 | `(message-separator ((t (:foreground ,yellow-2)))) 184 | `(cperl-nonoverridable-face ((t :foreground ,green-2))) 185 | `(cperl-array-face ((t (:foreground ,white-1 :background ,brown-3)))) 186 | `(cperl-hash-face ((t (:foreground ,white-1 :background ,brown-5)))) 187 | ;; The rest of the Info title faces inherit from this. 188 | `(info-title-4 ((t :foreground ,brown-2 :weight bold :inherit variable-pitch))) 189 | `(info-menu-header ((t :foreground ,brown-2 :weight bold :inherit variable-pitch))) 190 | `(info-menu-star ((t :foreground ,purple-1))) 191 | `(projector-writable-project ((t :foreground ,orange-4))) 192 | `(projector-read-only-project ((t :foreground ,brown-7))) 193 | `(js2-external-variable ((t (:foreground ,orange-4)))) 194 | `(js2-jsdoc-html-tag-delimiter ((t (:foreground ,yellow-3)))) 195 | `(js2-jsdoc-html-tag-name ((t (:foreground ,yellow-3)))) 196 | ;; The colors for the delimitersmust be distinct from all the 197 | ;; others colors used, lest they assimilate, but they must not 198 | ;; clash with them or with one another. 199 | '(rainbow-delimiters-unmatched-face ((t (:inherit font-lock-warning-face)))) 200 | '(rainbow-delimiters-depth-1-face ((t (:foreground "wheat")))) 201 | '(rainbow-delimiters-depth-2-face ((t (:foreground "tan")))) 202 | '(rainbow-delimiters-depth-3-face ((t (:foreground "#E1A95F")))) ;earth yellow 203 | '(rainbow-delimiters-depth-4-face ((t (:foreground "sandy brown")))) 204 | '(rainbow-delimiters-depth-5-face ((t (:foreground "peru")))) 205 | '(rainbow-delimiters-depth-6-face ((t (:foreground "chocolate")))) 206 | '(rainbow-delimiters-depth-7-face ((t (:foreground "sienna")))) 207 | '(rainbow-delimiters-depth-8-face ((t (:foreground "#80461B")))) ;russet 208 | '(rainbow-delimiters-depth-9-face ((t (:foreground "#B87333")))) ;copper 209 | '(rainbow-delimiters-unmatched-face ((t (:inherit error)))) 210 | `(minimap-active-region-background ((t (:background ,brown-4)))) 211 | `(org-special-keyword ((t (:foreground ,brown-5)))) 212 | `(org-table ((t (:foreground ,blue-2)))) 213 | '(eshell-prompt ((t (:inherit minibuffer-prompt)))) 214 | '(eshell-ls-symlink ((t (:inherit link :bold t)))) 215 | `(eshell-ls-readonly ((t (:foreground ,brown-7)))) 216 | '(eshell-ls-missing ((t (:inherit error)))) 217 | `(eshell-ls-executable ((t (:foreground ,green-2 :bold t)))) 218 | `(eshell-ls-backup ((t (:foreground ,brown-8)))) 219 | `(eshell-ls-clutter ((t (:foreground ,brown-2)))) 220 | `(eshell-ls-archive ((t (:foreground ,red-5 :bold t)))) 221 | `(eshell-ls-special ((t (:foreground ,purple-3 :bold t)))) 222 | `(eshell-ls-directory ((t (:foreground ,blue-2 :bold t)))) ;01;34 223 | ;; TODO Other Eshell faces. 224 | '(sh-heredoc ((t (:inherit font-lock-string-face)))) 225 | `(woman-italic ((t :foreground ,yellow-2 :italic t))) 226 | `(woman-bold ((t :foreground ,blue-2 :weight normal))) 227 | `(bm-face ((t :background ,orange-3))) 228 | `(bm-persistent-face ((t :background ,purple-1))) 229 | `(bm-fringe-face ((t :background ,orange-3))) 230 | `(bm-fringe-persistent-face ((t :background ,purple-1))) 231 | '(nxml-comment-content ((t (:inherit font-lock-comment-face)))) 232 | `(nxml-tag-delimiter ((t (:foreground ,yellow-3)))) 233 | `(nxml-processing-instruction-target ((t (:foreground ,brown-2)))) 234 | `(nxml-entity-ref-delimiter ((t (:foreground ,blue-2)))) 235 | `(nxml-entity-ref-name ((t (:foreground ,blue-2)))) 236 | `(nxml-element-local-name ((t (:foreground ,yellow-3)))) 237 | `(nxml-cdata-section-content ((t (:foreground ,red-3)))) 238 | `(nxml-attribute-local-name ((t (:foreground ,orange-1)))) 239 | `(nxml-attribute-value ((t (:foreground ,yellow-1))))) 240 | (custom-theme-set-variables 241 | 'birds-of-paradise 242 | `(ansi-color-names-vector 243 | ;; black, red, green, yellow, blue, magenta, cyan, white 244 | [,black-1 ,red-3 ,green-2 ,yellow-4 ,blue-3 ,purple-1 ,blue-4 ,white-2]) 245 | `(ansi-term-color-vector 246 | ;; [unspecified "black" "red3" "green3" "yellow3" "blue2" "magenta3" "cyan3" "white"] 247 | [unspecified ,black-1 ,red-3 ,green-2 ,yellow-4 ,blue-3 ,purple-1 ,blue-4 ,white-2]))) 248 | 249 | (provide-theme 'birds-of-paradise) 250 | 251 | ;; Local Variables: 252 | ;; eval: (rainbow-mode 1) 253 | ;; no-byte-compile: t 254 | ;; End: 255 | 256 | ;;; birds-of-paradise-theme.el ends here 257 | --------------------------------------------------------------------------------