├── README.md ├── distinguished-theme.el └── screenshot.png /README.md: -------------------------------------------------------------------------------- 1 | # distinguished-theme 2 | 3 | A modified port of the distinguished theme for vim. Requires Emacs 24. 4 | 5 | ![Distinguished screenshot](screenshot.png) 6 | 7 | Note that custom highlighting isn't supported for a lot of packages yet, support for 8 | other packages will be added gradually. 9 | 10 | ## Installation 11 | 12 | Install from MELPA: 13 | 14 | ``` 15 | M-x package-install RET distinguished-theme 16 | ``` 17 | 18 | Load the theme with `M-x load-theme RET distinguished`. 19 | 20 | To set distinguished as the default theme, add this to your init file: 21 | 22 | ```lisp 23 | (load-theme 'distinguished t) 24 | ``` 25 | -------------------------------------------------------------------------------- /distinguished-theme.el: -------------------------------------------------------------------------------- 1 | ;;; distinguished-theme.el --- A dark and elegant theme for emacs. 2 | 3 | ;; Copyright © 2014 Kim Silkebækken 4 | 5 | ;; Author: Kim Silkebækken 6 | ;; URL: https://github.com/Lokaltog/distinguished-theme 7 | ;; Version: 0.0.1 8 | 9 | ;; Permission is hereby granted, free of charge, to any person obtaining 10 | ;; a copy of this software and associated documentation files (the 11 | ;; "Software"), to deal in the Software without restriction, including 12 | ;; without limitation the rights to use, copy, modify, merge, publish, 13 | ;; distribute, sublicense, and/or sell copies of the Software, and to 14 | ;; permit persons to whom the Software is furnished to do so, subject to 15 | ;; the following conditions: 16 | 17 | ;; The above copyright notice and this permission notice shall be 18 | ;; included in all copies or substantial portions of the Software. 19 | 20 | ;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 21 | ;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 22 | ;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 23 | ;; IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 24 | ;; CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 25 | ;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 26 | ;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 27 | 28 | ;;; Commentary: 29 | 30 | ;; A modified port of the distinguished theme for vim. 31 | 32 | ;;; Code: 33 | (deftheme distinguished "Distinguished color theme") 34 | 35 | (let ((dst-fg (if (display-graphic-p) "#f0fef0" "color-231")) 36 | (dst-bg (if (display-graphic-p) "#000000" "color-232")) 37 | (dst-bg+0 (if (display-graphic-p) "#151311" "color-234")) 38 | (dst-bg+1 (if (display-graphic-p) "#252321" "color-236")) 39 | (dst-bg+2 (if (display-graphic-p) "#474544" "color-238")) 40 | (dst-gray-2 (if (display-graphic-p) "#58574e" "color-240")) 41 | (dst-gray-1 (if (display-graphic-p) "#6c6a60" "color-242")) 42 | (dst-gray (if (display-graphic-p) "#969385" "color-243")) 43 | (dst-gray+1 (if (display-graphic-p) "#b4b1a2" "color-250")) 44 | (dst-gray+2 (if (display-graphic-p) "#d0cbc0" "color-252")) 45 | (dst-steel (if (display-graphic-p) "#8a9496" "color-245")) 46 | (dst-steel+1 (if (display-graphic-p) "#acb0b3" "color-247")) 47 | (dst-steel+2 (if (display-graphic-p) "#c0c7ca" "color-251")) 48 | (dst-blue (if (display-graphic-p) "#67809c" "color-173")) 49 | (dst-blue+1 (if (display-graphic-p) "#b2c3cc" "color-66" )) 50 | (dst-blue+2 (if (display-graphic-p) "#d9e2ff" "color-69" )) 51 | (dst-green-2 (if (display-graphic-p) "#646d14" "color-22" )) 52 | (dst-green-1 (if (display-graphic-p) "#869038" "color-28" )) 53 | (dst-green (if (display-graphic-p) "#a4ac64" "color-143")) 54 | (dst-green+1 (if (display-graphic-p) "#ccc768" "color-67" )) 55 | (dst-red-3 (if (display-graphic-p) "#3f1c0f" "color-124")) 56 | (dst-red-2 (if (display-graphic-p) "#7c2a09" "color-196")) 57 | (dst-red-1 (if (display-graphic-p) "#a7502d" "color-160")) 58 | (dst-red (if (display-graphic-p) "#d47c59" "color-179")) 59 | (dst-red+1 (if (display-graphic-p) "#edb08f" "color-173")) 60 | (dst-red+2 (if (display-graphic-p) "#edbca2" "color-208")) 61 | (dst-yellow-2 (if (display-graphic-p) "#875f00" "color-94")) 62 | (dst-yellow-1 (if (display-graphic-p) "#ffd700" "color-220")) 63 | (dst-yellow (if (display-graphic-p) "#d7af5f" "color-226")) 64 | (dst-yellow+1 (if (display-graphic-p) "#ffd75f" "color-137")) 65 | (dst-yellow+2 (if (display-graphic-p) "#f9ee98" "color-228")) 66 | (dst-intense-red (if (display-graphic-p) "#ff2a00" "color-202"))) 67 | (custom-theme-set-faces 68 | 'distinguished 69 | `(default ((t (:foreground ,dst-fg :background ,dst-bg)))) 70 | `(cursor ((t (:foreground ,dst-bg :background ,dst-fg)))) 71 | `(hl-line ((t (:background ,dst-bg+0)))) 72 | `(minibuffer-prompt ((t (:foreground ,dst-green :weight bold)))) 73 | `(region ((t (:background ,dst-bg+2)))) 74 | `(secondary-selection ((t (:inherit hl-line)))) 75 | `(fringe ((t (:foreground ,dst-gray :background ,dst-bg+0)))) 76 | `(vertical-border ((t (:foreground ,dst-bg+2)))) 77 | `(mode-line ((t (:foreground ,dst-gray+2 :background ,dst-bg+2 :box (:line-width -1 :style released-button))))) 78 | `(mode-line-buffer-id ((t (:foreground ,dst-green :weight bold)))) 79 | `(mode-line-inactive ((t (:foreground ,dst-gray :background ,dst-bg+1 :box (:line-width -1 :style released-button))))) 80 | `(button ((t (:foreground ,dst-blue+1 :underline t)))) 81 | 82 | ;; font lock 83 | `(font-lock-builtin-face ((t (:foreground ,dst-yellow+1 :weight bold)))) 84 | `(font-lock-comment-face ((t (:foreground ,dst-gray, :slant italic)))) 85 | `(font-lock-comment-delimiter-face ((t (:foreground ,dst-bg+2)))) 86 | `(font-lock-doc-face ((t (:foreground ,dst-gray)))) 87 | `(font-lock-constant-face ((t (:foreground ,dst-yellow+1 :weight bold)))) 88 | `(font-lock-function-name-face ((t (:foreground ,dst-red :weight bold)))) 89 | `(font-lock-keyword-face ((t (:foreground ,dst-blue :weight bold)))) 90 | `(font-lock-negation-char-face ((t (:foreground ,dst-yellow :weight bold)))) 91 | `(font-lock-preprocessor-face ((t (:foreground ,dst-steel+1 :weight bold :slant italic)))) 92 | `(font-lock-regexp-grouping-construct ((t (:foreground ,dst-yellow :weight bold)))) 93 | `(font-lock-regexp-grouping-backslash ((t (:foreground ,dst-red :weight bold)))) 94 | `(font-lock-string-face ((t (:foreground ,dst-green)))) 95 | `(font-lock-type-face ((t (:foreground ,dst-green+1 :weight bold)))) 96 | `(font-lock-variable-name-face ((t (:foreground ,dst-blue+1 :weight normal :slant italic)))) 97 | `(font-lock-warning-face ((t (:foreground ,dst-intense-red :weight bold)))) 98 | 99 | ;; python-mode 100 | `(py-pseudo-keyword-face ((t (:foreground ,dst-blue+1 :weight bold)))) 101 | `(py-object-reference-face ((t (:foreground ,dst-blue :weight bold :slant italic)))) 102 | `(py-variable-name-face ((t (:foreground ,dst-blue+1 :weight normal :slant italic)))) 103 | `(py-number-face ((t (:foreground ,dst-yellow-1 :weight normal :slant italic)))) 104 | `(py-import-from-face ((t (:foreground ,dst-red)))) 105 | `(py-def-class-face ((t (:foreground ,dst-blue :weight bold)))) 106 | `(py-decorators-face ((t (:foreground ,dst-yellow :slant italic)))) 107 | `(py-class-name-face ((t (:foreground ,dst-green+1 :weight bold)))) 108 | `(py-exception-name-face ((t (:foreground ,dst-red :weight bold)))) 109 | 110 | ;; js2-mode 111 | `(js2-external-variable ((t (:foreground ,dst-yellow+1 :weight normal :slant italic)))) 112 | `(js2-function-param ((t (:foreground ,dst-red+1 :weight normal :slant italic)))) 113 | 114 | ;; highlight-numbers 115 | `(highlight-numbers-number ((t (:foreground ,dst-yellow-1 :weight normal :slant italic)))) 116 | 117 | ;; basic whitespace-mode (tabs/newlines) 118 | `(whitespace-tab ((t (:foreground ,dst-bg+1 :background nil :weight normal)))) 119 | `(whitespace-newline ((t (:foreground ,dst-red-3 :background nil :weight normal)))) 120 | 121 | ;; show parens 122 | `(show-paren-mismatch ((t (:foreground ,dst-fg :background ,dst-red-1 :weight bold)))) 123 | `(show-paren-match ((t (:foreground ,dst-fg :background ,dst-green-2 :weight bold)))) 124 | 125 | ;; search highlight 126 | `(isearch ((t (:foreground ,dst-fg :background ,dst-green-2 :weight bold :slant normal :box (:line-width -1 :style released-button))))) 127 | `(isearch-fail ((t (:foreground ,dst-fg :background ,dst-red-1 :weight bold :slant normal :box (:line-width -1 :style released-button))))) 128 | `(lazy-highlight ((t (:foreground ,dst-bg :background ,dst-yellow+1 :weight bold :slant normal :box (:line-width -1 :style released-button))))) 129 | 130 | ;; rainbow delimiters 131 | `(rainbow-delimiters-depth-1-face ((t (:foreground ,dst-yellow+2)))) 132 | `(rainbow-delimiters-depth-2-face ((t (:foreground ,dst-green)))) 133 | `(rainbow-delimiters-depth-3-face ((t (:foreground ,dst-red+1)))) 134 | `(rainbow-delimiters-depth-4-face ((t (:foreground ,dst-blue+1)))) 135 | `(rainbow-delimiters-depth-5-face ((t (:foreground ,dst-yellow+2)))) 136 | `(rainbow-delimiters-depth-6-face ((t (:foreground ,dst-green)))) 137 | `(rainbow-delimiters-depth-7-face ((t (:foreground ,dst-red+1)))) 138 | `(rainbow-delimiters-depth-8-face ((t (:foreground ,dst-blue+1)))) 139 | `(rainbow-delimiters-depth-9-face ((t (:foreground ,dst-yellow+2)))) 140 | 141 | ;; git-gutter 142 | `(git-gutter:added ((t (:foreground ,dst-green-1 :weight bold)))) 143 | `(git-gutter:deleted ((t (:foreground ,dst-red-1 :weight bold)))) 144 | `(git-gutter:modified ((t (:foreground ,dst-blue :weight bold)))) 145 | `(git-gutter:unchanged ((t (:foreground ,dst-fg :weight bold)))) 146 | 147 | ;; git-gutter-fr 148 | `(git-gutter-fr:added ((t (:foreground ,dst-green-1 :weight bold)))) 149 | `(git-gutter-fr:deleted ((t (:foreground ,dst-red-1 :weight bold)))) 150 | `(git-gutter-fr:modified ((t (:foreground ,dst-blue :weight bold)))) 151 | 152 | ;; flx 153 | `(flx-highlight-face ((t (:foreground ,dst-red :weight bold :underline ,dst-red-2)))) 154 | 155 | ;; flycheck 156 | `(flycheck-error 157 | ((((supports :underline (:style line))) 158 | (:underline (:style line :color ,dst-red-1) :inherit unspecified)) 159 | (t (:foreground ,dst-red-1 :weight bold :underline t)))) 160 | `(flycheck-warning 161 | ((((supports :underline (:style line))) 162 | (:underline (:style line :color ,dst-yellow) :inherit unspecified)) 163 | (t (:foreground ,dst-yellow :weight bold :underline t)))) 164 | `(flycheck-info 165 | ((((supports :underline (:style line))) 166 | (:underline (:style line :color ,dst-blue) :inherit unspecified)) 167 | (t (:foreground ,dst-blue :weight bold :underline t)))) 168 | `(flycheck-fringe-error ((t (:foreground ,dst-red-1 :weight bold)))) 169 | `(flycheck-fringe-warning ((t (:foreground ,dst-yellow :weight bold)))) 170 | `(flycheck-fringe-info ((t (:foreground ,dst-blue :weight bold)))) 171 | 172 | ;; ace-jump 173 | `(ace-jump-face-background ((t (:foreground ,dst-gray-2 :background nil :weight normal :inverse-video nil)))) 174 | `(ace-jump-face-foreground ((t (:foreground ,dst-bg :background ,dst-intense-red :weight bold :slant normal :inverse-video nil :box (:line-width -1 :style released-button))))) 175 | 176 | ;; auto-complete 177 | `(ac-candidate-face ((t (:foreground ,dst-gray :background ,dst-bg+1)))) 178 | `(ac-completion-face ((t (:foreground ,dst-gray-1 :background nil :weight normal :slant normal :underline ,dst-bg+1)))) 179 | `(ac-selection-face ((t (:foreground ,dst-fg :background ,dst-blue :weight bold)))) 180 | `(popup-tip-face ((t (:foreground ,dst-bg :background ,dst-yellow)))) 181 | `(popup-scroll-bar-foreground-face ((t (:background ,dst-gray+2)))) 182 | `(popup-scroll-bar-background-face ((t (:background ,dst-bg+2)))) 183 | `(popup-isearch-match ((t (:foreground ,dst-fg :background ,dst-bg)))) 184 | 185 | ;; company-mode 186 | `(company-tooltip ((t (:foreground ,dst-fg :background ,dst-bg+1)))) 187 | `(company-tooltip-annotation ((t (:foreground ,dst-gray :background ,dst-bg+1 :slant italic)))) 188 | `(company-tooltip-selection ((t (:foreground ,dst-fg :background ,dst-blue :weight bold)))) 189 | `(company-tooltip-mouse ((t (:background ,dst-bg+2)))) 190 | `(company-tooltip-common ((t (:foreground ,dst-gray :background ,dst-bg+1 :weight bold)))) 191 | `(company-tooltip-common-selection ((t (:foreground ,dst-blue+2 :background ,dst-blue :weight bold)))) 192 | `(company-scrollbar-fg ((t (:background ,dst-gray)))) 193 | `(company-scrollbar-bg ((t (:background ,dst-bg+2)))) 194 | `(company-preview ((t (:background ,dst-blue)))) 195 | `(company-preview-common ((t (:foreground ,dst-fg :background ,dst-yellow :weight bold)))) 196 | 197 | ;; auto-dim-other-buffers 198 | `(auto-dim-other-buffers-face ((t (:foreground ,dst-gray+1 :background ,dst-bg+0)))) 199 | 200 | ;; diff 201 | `(diff-added ((t (:foreground ,dst-green :background ,dst-green-2)))) 202 | `(diff-changed ((t (:foreground ,dst-yellow-1 :background ,dst-yellow-2)))) 203 | `(diff-file-header ((t (:background ,dst-green+1 :weight bold)))) 204 | `(diff-function ((t (:background ,dst-gray-1)))) 205 | `(diff-header ((t (:background ,dst-gray-1)))) 206 | `(diff-hunk-header ((t (:background ,dst-gray-1)))) 207 | `(diff-index ((t (:background ,dst-blue+1)))) 208 | `(diff-indicator-added ((t (:foreground ,dst-green-1 :weight bold)))) 209 | `(diff-indicator-changed ((t (:foreground ,dst-yellow-1 :weight bold)))) 210 | `(diff-indicator-removed ((t (:foreground ,dst-red-1 :weight bold)))) 211 | `(diff-refine-added ((t (:foreground ,dst-green :background 212 | ,dst-green-1 :weight bold)))) 213 | `(diff-refine-change ((t (:foreground ,dst-yellow-1 :background 214 | ,dst-red+2 :weight bold)))) 215 | `(diff-refine-removed ((t (:foreground ,dst-red-1 :background ,dst-red+1)))) 216 | `(diff-removed ((t (:foreground ,dst-red-1)))) 217 | )) 218 | 219 | ;;;###autoload 220 | (and load-file-name 221 | (boundp 'custom-theme-load-path) 222 | (add-to-list 'custom-theme-load-path 223 | (file-name-as-directory 224 | (file-name-directory load-file-name)))) 225 | 226 | (provide-theme 'distinguished) 227 | ;;; distinguished-theme.el ends here 228 | -------------------------------------------------------------------------------- /screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lokaltog/distinguished-theme/9b1d25ac59465a5016d187ea84b7614c95a29b3b/screenshot.png --------------------------------------------------------------------------------