Blob


1 ;;; minimal-light-theme.el --- A light/dark minimalistic Emacs 27 theme. -*- lexical-binding: t; -*-
3 ;; Copyright (C) 2020 Omar Polo
4 ;; Copyright (C) 2014 Anler Hp
6 ;; Author: Anler Hp <anler86 [at] gmail.com>
7 ;; Keywords: color, theme, minimal
8 ;; X-URL: http://github.com/ikame/minimal-theme
9 ;; URL: http://github.com/ikame/minimal-theme
11 ;; This program is free software; you can redistribute it and/or modify
12 ;; it under the terms of the GNU General Public License as published by
13 ;; the Free Software Foundation, either version 3 of the License, or
14 ;; (at your option) any later version.
16 ;; This program is distributed in the hope that it will be useful,
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 ;; GNU General Public License for more details.
21 ;; You should have received a copy of the GNU General Public License
22 ;; along with this program. If not, see <http://www.gnu.org/licenses/>.
24 ;;; Commentary:
25 ;;
26 ;; A minimalistic color theme to avoid distraction with
27 ;; colors. Based on monochrome theme.
29 ;;; Code:
30 (deftheme minimal "minimal light theme.")
32 (let* ((class '((class color) (min-colors 89)))
33 (foreground "#586e75")
34 (background "#ffffff") ;; "#fdf6e3"
35 (cursor "#333")
36 (border "grey90")
37 (minibuffer cursor)
38 (region "grey85")
39 (comment-delimiter "grey55")
40 (comment "grey30")
41 (constant foreground)
42 (string "grey40")
43 (modeline-foreground foreground)
44 (modeline-background "#e1dbca")
45 (modeline-foreground-inactive comment)
46 (modeline-background-inactive background)
47 (modeline-border-color "white")
48 (isearch-background modeline-background)
49 (hl-background "grey94")
50 (hl-face-background nil)
51 (failure "red")
52 (org-background "grey94"))
53 (custom-theme-set-faces
54 'minimal
56 ;; basic stuff
57 `(default ((,class (:background ,background :foreground ,foreground))))
58 `(fringe ((,class (:inherit default))))
59 `(cursor ((,class (:background ,cursor :inverse-video t))))
60 `(vertical-border ((,class (:foreground ,border))))
62 ;; minibuffer
63 `(minibuffer-prompt ((,class (:foreground ,minibuffer :weight bold))))
65 ;; region
66 `(region ((,class (:background ,region))))
67 `(secondary-selection ((,class (:background ,region))))
69 ;; faces
70 `(font-lock-builtin-face ((,class (:foreground ,foreground :weight bold))))
71 `(font-lock-constant-face ((,class (:foreground ,foreground :weight bold))))
72 `(font-lock-keyword-face ((,class (:foreground ,foreground :weight bold))))
73 `(font-lock-type-face ((,class (:foreground ,foreground :slant italic))))
74 `(font-lock-function-name-face ((,class (:foreground ,foreground :weight bold))))
75 `(font-lock-variable-name-face ((,class (:foreground ,foreground))))
77 `(font-lock-comment-delimiter-face ((,class (:foreground ,comment-delimiter))))
78 `(font-lock-comment-face ((,class (:foreground ,comment
79 :slant italic))))
80 `(font-lock-doc-face ((,class (:inherit (font-lock-comment-face)))))
81 `(font-lock-string-face ((,class (:foreground ,foreground :foreground ,string))))
83 ;; faces used by isearch
84 `(isearch ((,class (:foreground ,foreground :background ,isearch-background :weight normal))))
85 `(isearch-fail ((,class (:foreground ,failure :bold t))))
86 `(lazy-highlight
87 ((,class (:foreground ,foreground :background ,region))))
89 ;; flymake-error
90 `(flymake-error ((,class :underline (:style line :color "Red1"))))
92 ;; ido-mode
93 `(ido-subdir ((,class (:foreground ,foreground :weight bold))))
94 `(ido-only-match ((,class (:foreground ,foreground :weight bold))))
96 ;; show-paren
97 `(show-paren-match
98 ((,class (:inherit highlight
99 :underline (:color ,foreground :style line)))))
100 `(show-paren-mismatch
101 ((,class (:foreground ,failure :weight bold))))
102 `(show-paren-match-expression
103 ((,class (:inherit default :background "#eee"))))
105 ;; highlight-sexp
106 `(hl-sexp-face
107 ((,class (:inherit show-paren-match-expression))))
109 ;; tab-bar
110 `(tab-bar ((,class :background ,modeline-background)))
111 `(tab-bar-tab ((,class :background ,modeline-background-inactive
112 :box (:line-width 4 :color ,modeline-background-inactive))))
113 `(tab-bar-tab-inactive ((,class :background ,modeline-background
114 :box (:line-width 4 :color ,modeline-background))))
116 ;; help. Don't print funny boxes around keybindings
117 `(help-key-binding ((,class)))
119 ;; modeline
120 `(mode-line
121 ((,class (:inverse-video unspecified
122 :overline ,border
123 :underline nil
124 :foreground ,modeline-foreground
125 :background ,modeline-background
126 :overline ,border
127 :box (:line-width 3 :color ,modeline-background)))))
128 `(mode-line-buffer-id ((,class (:weight bold))))
129 `(mode-line-inactive
130 ((,class (:inverse-video unspecified
131 :overline ,border
132 :underline nil
133 :foreground ,modeline-foreground-inactive
134 :background ,modeline-background-inactive
135 :box (:line-width 3 :color ,background)))))
137 ;; hl-line-mode
138 `(hl-line ((,class (:background ,hl-background))))
139 `(hl-line-face ((,class (:background ,hl-face-background))))
141 ;; highlight-stages-mode
142 `(highlight-stages-negative-level-face ((,class (:foreground ,failure))))
143 `(highlight-stages-level-1-face ((,class (:background ,org-background))))
144 `(highlight-stages-level-2-face ((,class (:background ,region))))
145 `(highlight-stages-level-3-face ((,class (:background ,region))))
146 `(highlight-stages-higher-level-face ((,class (:background ,region))))
148 ;; org-mode
149 `(org-level-1 ((,class (:foreground ,foreground :height 1.6))))
150 `(org-level-2 ((,class (:foreground ,foreground :height 1.5))))
151 `(org-level-3 ((,class (:foreground ,foreground :height 1.4))))
152 `(org-level-4 ((,class (:foreground ,foreground :height 1.3))))
153 `(org-level-5 ((,class (:foreground ,foreground :height 1.2))))
154 `(org-level-6 ((,class (:foreground ,foreground :height 1.1))))
155 `(org-level-7 ((,class (:foreground ,foreground))))
156 `(org-level-8 ((,class (:foreground ,foreground))))
158 `(org-ellipsis ((,class (:inherit org-ellipsis :underline nil))))
160 `(org-table ((,class (:inherit fixed-pitch))))
161 `(org-meta-line ((,class (:inherit (font-lock-comment-face fixed-pitch)))))
162 `(org-property-value ((,class (:inherit fixed-pitch))) t)
163 `(org-verbatim ((,class (:inherit (shadow fixed-pitch)))))
164 `(org-quote ((,class (:slant italic))))
166 `(org-document-title ((,class (:foreground ,foreground))))
168 `(org-link ((,class (:foreground ,foreground :underline t))))
169 `(org-tag ((,class (:background ,org-background :foreground ,foreground))))
170 `(org-warning ((,class (:background ,region :foreground ,foreground :weight bold))))
171 `(org-todo ((,class (:weight bold))))
172 `(org-done ((,class (:weight bold))))
173 `(org-headline-done ((,class (:foreground ,foreground))))
175 `(org-table ((,class (:background ,org-background))))
176 `(org-code ((,class (:background ,org-background))))
177 `(org-date ((,class (:background ,org-background :underline t))))
178 `(org-block ((,class (:background ,org-background))))
179 `(org-block-background ((,class (:background ,org-background :foreground ,foreground))))
180 `(org-block-begin-line
181 ((,class (:background ,org-background :foreground ,comment-delimiter :weight bold))))
182 `(org-block-end-line
183 ((,class (:background ,org-background :foreground ,comment-delimiter :weight bold))))
185 ;; outline
186 `(outline-1 ((,class (:inherit org-level-1))))
187 `(outline-2 ((,class (:inherit org-level-2))))
188 `(outline-3 ((,class (:inherit org-level-3))))
189 `(outline-4 ((,class (:inherit org-level-4))))
190 `(outline-5 ((,class (:inherit org-level-5))))
191 `(outline-6 ((,class (:inherit org-level-6))))
192 `(outline-7 ((,class (:inherit org-level-7))))
193 `(outline-8 ((,class (:inherit org-level-8))))
195 ;; js2-mode
196 `(js2-external-variable ((,class (:inherit base-faces :weight bold))))
197 `(js2-function-param ((,class (:inherit base-faces))))
198 `(js2-instance-member ((,class (:inherit base-faces))))
199 `(js2-jsdoc-html-tag-delimiter ((,class (:inherit base-faces))))
200 `(js2-jsdoc-html-tag-name ((,class (:inherit base-faces))))
201 `(js2-jsdoc-tag ((,class (:inherit base-faces))))
202 `(js2-jsdoc-type ((,class (:inherit base-faces :weight bold))))
203 `(js2-jsdoc-value ((,class (:inherit base-faces))))
204 `(js2-magic-paren ((,class (:underline t))))
205 `(js2-private-function-call ((,class (:inherit base-faces))))
206 `(js2-private-member ((,class (:inherit base-faces))))
208 ;; sh-mode
209 `(sh-heredoc ((,class (:inherit base-faces :slant italic))))
211 ;; telega
212 `(telega-msg-heading ((,class (:inherit base-faces :underline ,comment-delimiter
213 :foreground ,comment))))
214 `(telega-msg-user-title ((,class (:inherit telega-msg-heading))))
215 `(telega-msg-inline-reply ((,class (:inherit telega-msg-heading
216 :slant italic))))
218 ;; objed
219 `(objed-hl ((,class (:background ,region))))
221 ;; circe
222 `(circe-prompt-face ((,class (:inherit default))))))
224 ;;;###autoload
225 (when (and (boundp 'custom-theme-load-path) load-file-name)
226 (add-to-list 'custom-theme-load-path
227 (file-name-as-directory (file-name-directory load-file-name))))
229 (provide-theme 'minimal)
230 ;;; minimal-theme.el ends here