summaryrefslogtreecommitdiff
path: root/.config
diff options
context:
space:
mode:
Diffstat (limited to '.config')
-rw-r--r--.config/emacs/mango-light-theme.el347
-rw-r--r--.config/emacs/mango-theme.el507
2 files changed, 669 insertions, 185 deletions
diff --git a/.config/emacs/mango-light-theme.el b/.config/emacs/mango-light-theme.el
new file mode 100644
index 0000000..4cbda4f
--- /dev/null
+++ b/.config/emacs/mango-light-theme.el
@@ -0,0 +1,347 @@
+;;; mango-light-theme.el --- Just your average light theme -*- lexical-binding: t; -*-
+
+(deftheme mango-light
+ "Mildly light, light theme.
+Your average not-so-light light theme, because none of the other options
+were exactly to my liking. It’s about time I had a theme to call my
+own.")
+
+;; Colors are defined as: (GUI-HEX 256-COLOR 16-COLOR)
+(defconst mango-light-theme-colors-alist
+ '(;; (foreground . ("#3B4252" "color-238" "black"))
+ ;; (background . ("#ECEFF4" "color-255" "white"))
+ ;; (background-cool . ("#E5E9F0" "color-254" "white"))
+ ;; (background-dark . ("#FAFBFC" "color-231" "brightwhite"))
+ ;; (background-faint . ("#D8DEE9" "color-253" "brightwhite"))
+ ;; (middleground . ("#C8D0E0" "color-252" "brightwhite"))
+ (disabled . ("#9BA6B5" "color-247" "brightblack"))
+ (foreground . ("#000000" "color-0" "black"))
+ (background . ("#ffffff" "color-0" "black"))
+ (middleground . ("#c4c4c4" "color-0" "black"))
+ (background-cool . ("#e0e0e0" "color-0" "black"))
+ ;; TODO: Rename to foreground-light
+ (background-dark . ("#595959" "color-0" "black"))
+ (background-faint . ("#e6e6e6" "color-0" "black"))
+
+ (celestial-blue . ("#1B61CE" "color-26" "blue"))
+ (dark-red . ("#A12027" "color-124" "red"))
+ (khaki . ("#8A6C23" "color-94" "yellow"))
+ (lime . ("#358A2A" "color-28" "green"))
+ (magenta . ("#9A35B3" "color-127" "magenta"))
+ (pale-azure . ("#0A74B8" "color-31" "cyan"))
+ (red . ("#D22129" "color-160" "brightred"))
+ (salmon . ("#D1570B" "color-166" "brightyellow"))
+ (violet . ("#7A3B9E" "color-97" "magenta")))
+ "The color palette used throughout `mango-light-theme'.
+Each color is mapped to a list of colors of the form
+(GUI-HEX 256-COLOR 16-COLOR) for use in true-color, 256-color, and
+16-color modes.")
+
+(defsubst mango-light-theme-color (name &optional display)
+ "Get the color value of NAME for the given DISPLAY.
+DISPLAY can be 'gui, '256, or '16."
+ (let ((colors (alist-get name mango-light-theme-colors-alist)))
+ (pcase display
+ ('gui (nth 0 colors))
+ ('256 (nth 1 colors))
+ ('16 (nth 2 colors))
+ (_ (nth 0 colors)))))
+
+(custom-theme-set-faces
+ 'mango-light
+
+ ;; Standard Stuff
+ `(default
+ ((((type graphic tty) (min-colors 16777216))
+ (:foreground ,(mango-light-theme-color 'foreground 'gui)
+ :background ,(mango-light-theme-color 'background 'gui)))
+ (((type tty) (min-colors 256))
+ (:foreground ,(mango-light-theme-color 'foreground '256)
+ :background ,(mango-light-theme-color 'background '256)))
+ (((type tty))
+ (:foreground ,(mango-light-theme-color 'foreground '16)
+ :background ,(mango-light-theme-color 'background '16)))))
+ `(fringe
+ ((t (:inherit default))))
+
+ ;; Lines
+ `(hl-line
+ ((((type graphic tty) (min-colors 16777216))
+ (:background ,(mango-light-theme-color 'background-faint 'gui)))
+ (((type tty) (min-colors 256))
+ (:background ,(mango-light-theme-color 'background-faint '256)))
+ (((type tty))
+ (:background ,(mango-light-theme-color 'background-faint '16)))))
+ `(region
+ ((((type graphic tty) (min-colors 16777216))
+ (:background ,(mango-light-theme-color 'middleground 'gui)))
+ (((type tty) (min-colors 256))
+ (:background ,(mango-light-theme-color 'middleground '256)))
+ (((type tty))
+ (:background ,(mango-light-theme-color 'middleground '16)))))
+ `(header-line
+ ((((type graphic tty) (min-colors 16777216))
+ (:background ,(mango-light-theme-color 'middleground 'gui)))
+ (((type tty) (min-colors 256))
+ (:background ,(mango-light-theme-color 'middleground '256)))
+ (((type tty))
+ (:background ,(mango-light-theme-color 'middleground '16)))))
+ `(mode-line-active
+ ((t ( :box ,(mango-light-theme-color 'celestial-blue 'gui)
+ :inherit header-line))))
+ `(mode-line-inactive
+ ((((type graphic tty) (min-colors 16777216))
+ ( :background ,(mango-light-theme-color 'background-cool 'gui)
+ :box ,(mango-light-theme-color 'background-faint 'gui)
+ :weight light))
+ (((type tty) (min-colors 256))
+ ( :background ,(mango-light-theme-color 'background-cool '256)
+ :box ,(mango-light-theme-color 'background-faint 'gui)
+ :weight light))
+ (((type tty))
+ ( :background ,(mango-light-theme-color 'background-cool '16)
+ :box ,(mango-light-theme-color 'background-faint 'gui)
+ :weight light))))
+ `(window-divider
+ ((((type graphic tty) (min-colors 16777216))
+ (:foreground ,(mango-light-theme-color 'background-cool 'gui)))
+ (((type tty) (min-colors 256))
+ (:foreground ,(mango-light-theme-color 'background-cool '256)))
+ (((type tty))
+ (:foreground ,(mango-light-theme-color 'background-cool '16)))))
+ `(window-divider-first-pixel
+ ((((type graphic tty) (min-colors 16777216))
+ (:foreground ,(mango-light-theme-color 'background-cool 'gui)))
+ (((type tty) (min-colors 256))
+ (:foreground ,(mango-light-theme-color 'background-cool '256)))
+ (((type tty))
+ (:foreground ,(mango-light-theme-color 'background-cool '16)))))
+ `(window-divider-last-pixel
+ ((((type graphic tty) (min-colors 16777216))
+ (:foreground ,(mango-light-theme-color 'background-cool 'gui)))
+ (((type tty) (min-colors 256))
+ (:foreground ,(mango-light-theme-color 'background-cool '256)))
+ (((type tty))
+ (:foreground ,(mango-light-theme-color 'background-cool '16)))))
+
+ ;; Line Numbers
+ `(line-number
+ ((((type graphic tty) (min-colors 16777216))
+ (:foreground ,(mango-light-theme-color 'disabled 'gui)
+ :background ,(mango-light-theme-color 'background 'gui)))
+ (((type tty) (min-colors 256))
+ (:foreground ,(mango-light-theme-color 'disabled '256)
+ :background ,(mango-light-theme-color 'background '256)))
+ (((type tty))
+ (:foreground ,(mango-light-theme-color 'disabled '16)
+ :background ,(mango-light-theme-color 'background '16)))))
+ `(line-number-current-line
+ ((((type graphic tty) (min-colors 16777216))
+ (:foreground ,(mango-light-theme-color 'salmon 'gui)
+ :background ,(mango-light-theme-color 'background 'gui) :weight bold))
+ (((type tty) (min-colors 256))
+ (:foreground ,(mango-light-theme-color 'salmon '256)
+ :background ,(mango-light-theme-color 'background '256) :weight bold))
+ (((type tty))
+ (:foreground ,(mango-light-theme-color 'salmon '16)
+ :background ,(mango-light-theme-color 'background '16) :weight bold))))
+
+ ;; Documentation
+ `(font-lock-comment-face
+ ((((type graphic tty) (min-colors 16777216))
+ (:foreground ,(mango-light-theme-color 'khaki 'gui) :weight semi-bold))
+ (((type tty) (min-colors 256))
+ (:foreground ,(mango-light-theme-color 'khaki '256) :weight semi-bold))
+ (((type tty))
+ (:foreground ,(mango-light-theme-color 'khaki '16) :weight semi-bold))))
+ `(font-lock-doc-face
+ ((((type graphic tty) (min-colors 16777216))
+ (:foreground ,(mango-light-theme-color 'disabled 'gui)))
+ (((type tty) (min-colors 256))
+ (:foreground ,(mango-light-theme-color 'disabled '256)))
+ (((type tty))
+ (:foreground ,(mango-light-theme-color 'disabled '16)))))
+
+ ;; Modeline
+ `(mm-modeline-overwrite-face ((t (:weight normal))))
+ `(mm-modeline-readonly-face ((t (:weight normal))))
+ `(mm-modeline-buffer-name-face ((t (:inherit font-lock-constant-face))))
+ `(mm-modeline-buffer-modified-face ((t (:inherit shadow))))
+ `(mm-modeline-major-mode-name-face ((t (:weight normal))))
+ `(mm-modeline-major-mode-symbol-face ((t (:inherit shadow))))
+ `(mm-modeline-git-branch-face ((t (:inherit font-lock-constant-face))))
+ `(mm-modeline-narrow-face
+ ((((type graphic tty) (min-colors 16777216))
+ (:background ,(mango-light-theme-color 'dark-red 'gui) :foreground ,(mango-light-theme-color 'background-dark 'gui) :box ,(mango-light-theme-color 'dark-red 'gui) :weight normal))
+ (((type tty) (min-colors 256))
+ (:background ,(mango-light-theme-color 'dark-red '256) :foreground ,(mango-light-theme-color 'background-dark '256) :box ,(mango-light-theme-color 'dark-red '256) :weight normal))
+ (((type tty))
+ (:background ,(mango-light-theme-color 'dark-red '16) :foreground ,(mango-light-theme-color 'background-dark '16) :box ,(mango-light-theme-color 'dark-red '16) :weight normal))))
+
+ ;; Core Language
+ `(font-lock-builtin-face ((t (:inherit font-lock-preprocessor-face))))
+ `(font-lock-keyword-face
+ ((((type graphic tty) (min-colors 16777216))
+ (:foreground ,(mango-light-theme-color 'violet 'gui)))
+ (((type tty) (min-colors 256))
+ (:foreground ,(mango-light-theme-color 'violet '256)))
+ (((type tty))
+ (:foreground ,(mango-light-theme-color 'violet '16)))))
+ `(font-lock-type-face
+ ((((type graphic tty) (min-colors 16777216))
+ (:foreground ,(mango-light-theme-color 'celestial-blue 'gui)))
+ (((type tty) (min-colors 256))
+ (:foreground ,(mango-light-theme-color 'celestial-blue '256)))
+ (((type tty))
+ (:foreground ,(mango-light-theme-color 'celestial-blue '16)))))
+
+ ;; Function-likes
+ `(font-lock-function-name-face
+ ((((type graphic tty) (min-colors 16777216))
+ (:foreground ,(mango-light-theme-color 'khaki 'gui)))
+ (((type tty) (min-colors 256))
+ (:foreground ,(mango-light-theme-color 'khaki '256)))
+ (((type tty))
+ (:foreground ,(mango-light-theme-color 'khaki '16)))))
+ `(font-lock-preprocessor-face
+ ((((type graphic tty) (min-colors 16777216))
+ (:foreground ,(mango-light-theme-color 'magenta 'gui) :weight bold))
+ (((type tty) (min-colors 256))
+ (:foreground ,(mango-light-theme-color 'magenta '256) :weight bold))
+ (((type tty))
+ (:foreground ,(mango-light-theme-color 'magenta '16) :weight bold))))
+
+ ;; Variables
+ `(font-lock-constant-face ((t (:inherit font-lock-variable-name-face :weight bold))))
+ `(font-lock-variable-name-face
+ ((((type graphic tty) (min-colors 16777216))
+ (:foreground ,(mango-light-theme-color 'pale-azure 'gui)))
+ (((type tty) (min-colors 256))
+ (:foreground ,(mango-light-theme-color 'pale-azure '256)))
+ (((type tty))
+ (:foreground ,(mango-light-theme-color 'pale-azure '16)))))
+
+ ;; Other literals
+ `(help-key-binding ((t (:inherit font-lock-constant-face))))
+ `(font-lock-string-face
+ ((((type graphic tty) (min-colors 16777216))
+ (:foreground ,(mango-light-theme-color 'salmon 'gui)))
+ (((type tty) (min-colors 256))
+ (:foreground ,(mango-light-theme-color 'salmon '256)))
+ (((type tty))
+ (:foreground ,(mango-light-theme-color 'salmon '16)))))
+ `(font-lock-number-face
+ ((((type graphic tty) (min-colors 16777216))
+ (:foreground ,(mango-light-theme-color 'salmon 'gui)))
+ (((type tty) (min-colors 256))
+ (:foreground ,(mango-light-theme-color 'salmon '256)))
+ (((type tty))
+ (:foreground ,(mango-light-theme-color 'salmon '16)))))
+
+ ;; Org Mode
+ `(org-quote ((t (:inherit org-block :slant italic))))
+ `(org-code
+ ((((type graphic tty) (min-colors 16777216))
+ (:foreground ,(mango-light-theme-color 'salmon 'gui)))
+ (((type tty) (min-colors 256))
+ (:foreground ,(mango-light-theme-color 'salmon '256)))
+ (((type tty))
+ (:foreground ,(mango-light-theme-color 'salmon '16)))))
+ `(org-verbatim
+ ((((type graphic tty) (min-colors 16777216))
+ (:foreground ,(mango-light-theme-color 'lime 'gui)))
+ (((type tty) (min-colors 256))
+ (:foreground ,(mango-light-theme-color 'lime '256)))
+ (((type tty))
+ (:foreground ,(mango-light-theme-color 'lime '16)))))
+ `(org-block
+ ((((type graphic tty) (min-colors 16777216))
+ (:background ,(mango-light-theme-color 'background-cool 'gui)))
+ (((type tty) (min-colors 256))
+ (:background ,(mango-light-theme-color 'background-cool '256)))
+ (((type tty))
+ (:background ,(mango-light-theme-color 'background-cool '16)))))
+ `(org-hide
+ ((((type graphic tty) (min-colors 16777216))
+ (:foreground ,(mango-light-theme-color 'background 'gui)))
+ (((type tty) (min-colors 256))
+ (:foreground ,(mango-light-theme-color 'background '256)))
+ (((type tty))
+ (:foreground ,(mango-light-theme-color 'background '16)))))
+
+ ;; Info Page
+ `(Info-quoted ((t (:inherit default))))
+
+ ;; Magit
+ `(magit-diff-context-highlight ((t (:inherit hl-line))))
+ `(magit-section-highlight ((t (:inherit hl-line))))
+ `(magit-diff-hunk-heading
+ ((((type graphic tty) (min-colors 16777216))
+ (:background ,(mango-light-theme-color 'background-cool 'gui)))
+ (((type tty) (min-colors 256))
+ (:background ,(mango-light-theme-color 'background-cool '256)))
+ (((type tty))
+ (:background ,(mango-light-theme-color 'background-cool '16)))))
+ `(magit-diff-hunk-heading-highlight
+ ((((type graphic tty) (min-colors 16777216))
+ (:background ,(mango-light-theme-color 'middleground 'gui)))
+ (((type tty) (min-colors 256))
+ (:background ,(mango-light-theme-color 'middleground '256)))
+ (((type tty))
+ (:background ,(mango-light-theme-color 'middleground '16)))))
+ `(git-commit-summary
+ ((((type graphic tty) (min-colors 16777216))
+ (:foreground ,(mango-light-theme-color 'khaki 'gui)))
+ (((type tty) (min-colors 256))
+ (:foreground ,(mango-light-theme-color 'khaki '256)))
+ (((type tty))
+ (:foreground ,(mango-light-theme-color 'khaki '16)))))
+ `(git-commit-overlong-summary
+ ((((type graphic tty) (min-colors 16777216))
+ (:foreground ,(mango-light-theme-color 'background-dark 'gui)
+ :background ,(mango-light-theme-color 'red 'gui) :weight bold))
+ (((type tty) (min-colors 256))
+ (:foreground ,(mango-light-theme-color 'background-dark '256)
+ :background ,(mango-light-theme-color 'red '256) :weight bold))
+ (((type tty))
+ (:foreground ,(mango-light-theme-color 'background-dark '16)
+ :background ,(mango-light-theme-color 'red '16) :weight bold))))
+
+ ;; Vertico
+ `(vertico-current ((t (:inherit hl-line))))
+
+ ;; Marginalia
+ `(mm-diffstat-counter-added ((t (:foreground "green" :weight bold))))
+ `(mm-diffstat-counter-removed ((t (:foreground "red" :weight bold))))
+ `(marginalia-documentation
+ ((((type graphic tty) (min-colors 16777216))
+ (:foreground ,(mango-light-theme-color 'disabled 'gui) :underline nil))
+ (((type tty) (min-colors 256))
+ (:foreground ,(mango-light-theme-color 'disabled '256) :underline nil))
+ (((type tty))
+ (:foreground ,(mango-light-theme-color 'disabled '16) :underline nil))))
+
+ ;; Tempel
+ `(tempel-default
+ ((((type graphic tty) (min-colors 16777216))
+ (:slant italic :background ,(mango-light-theme-color 'middleground 'gui)))
+ (((type tty) (min-colors 256))
+ (:slant italic :background ,(mango-light-theme-color 'middleground '256)))
+ (((type tty))
+ (:slant italic :background ,(mango-light-theme-color 'middleground '16)))))
+ `(tempel-field
+ ((((type graphic tty) (min-colors 16777216))
+ (:slant italic :background ,(mango-light-theme-color 'middleground 'gui)))
+ (((type tty) (min-colors 256))
+ (:slant italic :background ,(mango-light-theme-color 'middleground '256)))
+ (((type tty))
+ (:slant italic :background ,(mango-light-theme-color 'middleground '16)))))
+ `(tempel-form
+ ((((type graphic tty) (min-colors 16777216))
+ (:slant italic :background ,(mango-light-theme-color 'middleground 'gui)))
+ (((type tty) (min-colors 256))
+ (:slant italic :background ,(mango-light-theme-color 'middleground '256)))
+ (((type tty))
+ (:slant italic :background ,(mango-light-theme-color 'middleground '16))))))
+
+(provide-theme 'mango-light)
diff --git a/.config/emacs/mango-theme.el b/.config/emacs/mango-theme.el
index f18f4c0..72a76f9 100644
--- a/.config/emacs/mango-theme.el
+++ b/.config/emacs/mango-theme.el
@@ -6,189 +6,326 @@ Your average not-so-dark dark theme, because none of the other options
were exactly to my liking. It’s about time I had a theme to call my
own.")
-(defsubst mango-theme--color (name)
- "Get the RGB value of the COLOR."
- (alist-get name mango-theme-colors-alist))
-
-(defmacro mango-theme--generate-set-faces (&rest body)
- "A macro to provide a much simpler syntax than what is expected by
-`custom-theme-set-faces'. This is possible because I only run Emacs
-graphically, so I shouldn’t need to have multiple specs per face.
-
-\(fn SPEC...)"
- (declare (indent 0))
- (let ((ret '('mango custom-theme-set-faces)))
- (dolist (spec body)
- (add-to-list 'ret `(backquote
- ,(list (car spec) `((((type graphic))
- ,(cdr spec)))))))
- (reverse ret)))
-
(defconst mango-theme-colors-alist
- '((foreground . "#C5C8C6")
- (background . "#2B303B")
- (background-cool . "#363C4A")
- (background-dark . "#1D2635")
- (background-faint . "#414859")
- (middleground . "#4F5561")
- (disabled . "#999999")
- (pale-azure . "#9CDCFE")
- (celestial-blue . "#569CD6")
- (violet . "#E57AE5")
- (khaki . "#F0E68C")
- (lime . "#B8F182")
- (dark-red . "#841A11")
- (orange . "#F1B282")
- (pink . "#ED97F5")
- (spanish-red . "#E60026"))
- "The color palette used throughout the `mango-theme'.")
-
-(mango-theme--generate-set-faces
- ;; Standard Stuff
- (default
- :foreground ,(mango-theme--color 'foreground)
- :background ,(mango-theme--color 'background))
- (fringe
- :inherit default)
-
- ;; Lines
- (hl-line
- :background ,(mango-theme--color 'background-faint))
- (region
- :background ,(mango-theme--color 'middleground))
- (header-line
- :background ,(mango-theme--color 'middleground))
- (mode-line-active
- :inherit header-line)
- (mode-line-inactive
- :background ,(mango-theme--color 'background-cool)
- :weight light)
- (window-divider
- :foreground ,(mango-theme--color 'background-cool))
- (window-divider-first-pixel
- :foreground ,(mango-theme--color 'background-cool))
- (window-divider-last-pixel
- :foreground ,(mango-theme--color 'background-cool))
-
- ;; Line Numbers
- (line-number
- :foreground ,(mango-theme--color 'background-faint)
- :background ,(mango-theme--color 'background))
- (line-number-current-line
- :foreground ,(mango-theme--color 'orange)
- :background ,(mango-theme--color 'background)
- :weight bold)
-
- ;; Documentation
- (font-lock-comment-face
- :foreground ,(mango-theme--color 'disabled))
- (font-lock-doc-face
- :inherit font-lock-comment-face)
-
- ;; Modeline
- (mm-modeline-overwrite-face
- :weight bold)
- (mm-modeline-readonly-face
- :weight bold)
- (mm-modeline-buffer-name-face
- :inherit font-lock-constant-face)
- (mm-modeline-buffer-modified-face
- :inherit shadow)
- (mm-modeline-major-mode-name-face
- :weight bold)
- (mm-modeline-major-mode-symbol-face
- :inherit shadow)
- (mm-modeline-narrow-face
- :background ,(mango-theme--color 'dark-red)
- :box ,(mango-theme--color 'dark-red)
- :weight bold)
- (mm-modeline-git-branch-face
- :inherit font-lock-constant-face)
-
- ;; Core Language
- (font-lock-keyword-face
- :foreground ,(mango-theme--color 'violet))
- (font-lock-type-face
- :foreground ,(mango-theme--color 'celestial-blue))
- (font-lock-builtin-face
- :inherit font-lock-preprocessor-face)
-
- ;; Function-likes
- (font-lock-function-name-face
- :foreground ,(mango-theme--color 'khaki))
- (font-lock-preprocessor-face
- :foreground ,(mango-theme--color 'pink)
- :weight bold)
-
- ;; Variables
- (font-lock-variable-name-face
- :foreground ,(mango-theme--color 'pale-azure))
- (font-lock-constant-face
- :inherit font-lock-variable-name-face
- :weight bold)
-
- ;; Other literals
- (font-lock-number-face
- :foreground ,(mango-theme--color 'orange))
- (help-key-binding
- :inherit font-lock-constant-face)
-
- ;; Org Mode
- (org-code
- :foreground ,(mango-theme--color 'orange))
- (org-verbatim
- :foreground ,(mango-theme--color 'lime))
- (org-block
- :background ,(mango-theme--color 'background-cool))
- (org-hide
- :foreground ,(mango-theme--color 'background))
- (org-quote
- :inherit org-block
- :slant italic)
-
- ;; Info Page
- (Info-quoted
- :inherit default)
-
- ;; Magit
- (magit-diff-hunk-heading
- :background ,(mango-theme--color 'background-cool))
- (magit-diff-hunk-heading-highlight
- :background ,(mango-theme--color 'middleground))
- (magit-diff-context-highlight
- :inherit hl-line)
- (magit-section-highlight
- :inherit hl-line)
-
- (git-commit-summary
- :foreground ,(mango-theme--color 'khaki))
- (git-commit-overlong-summary
- :foreground ,(mango-theme--color 'foreground)
- :background ,(mango-theme--color 'spanish-red)
- :weight bold)
-
- ;; Vertico
- (vertico-current
- :inherit hl-line)
-
- ;; Marginalia
- (marginalia-documentation
- :foreground ,(mango-theme--color 'disabled)
- :underline nil)
- (mm-diffstat-counter-added
- :foreground "green"
- :weight bold)
- (mm-diffstat-counter-removed
- :foreground "red"
- :weight bold)
-
- ;; Tempel
- (tempel-default
- :slant italic
- :background ,(mango-theme--color 'middleground))
- (tempel-field
- :slant italic
- :background ,(mango-theme--color 'middleground))
- (tempel-form
- :slant italic
- :background ,(mango-theme--color 'middleground)))
+ '((foreground . ("#C5C8C6" "color-251" "white"))
+ (background . ("#2B303B" "color-236" "black"))
+ (background-cool . ("#363C4A" "color-237" "black"))
+ (background-dark . ("#1D2635" "color-234" "black"))
+ (background-faint . ("#414859" "color-238" "brightblack"))
+ (middleground . ("#4F5561" "color-239" "brightblack"))
+ (disabled . ("#999999" "color-246" "brightblack"))
+ (celestial-blue . ("#569CD6" "color-74" "brightblue"))
+ (dark-red . ("#841A11" "color-88" "red"))
+ (khaki . ("#F0E68C" "color-228" "yellow"))
+ (lime . ("#B8F182" "color-156" "green"))
+ (magenta . ("#ED97F5" "color-213" "magenta"))
+ (pale-azure . ("#9CDCFE" "color-117" "cyan"))
+ (red . ("#E60026" "color-160" "brightred"))
+ (salmon . ("#F1B282" "color-216" "brightyellow"))
+ (violet . ("#E57AE5" "color-176" "brightmagenta")))
+ "The color palette used throughout `mango-theme'.
+Each color is mapped to a list of colors of the form
+(GUI-HEX 256-COLOR 16-COLOR) for use in true-color, 256-color, and
+16-color modes.")
+
+(defsubst mango-theme-color (name &optional display)
+ "Get the color value of NAME for the given DISPLAY.
+DISPLAY can be 'gui, '256, or '16."
+ (let ((colors (alist-get name mango-theme-colors-alist)))
+ (pcase display
+ ('gui (nth 0 colors))
+ ('256 (nth 1 colors))
+ ('16 (nth 2 colors))
+ (_ (nth 0 colors)))))
+
+(custom-theme-set-faces
+ 'mango
+
+ ;; Standard Stuff
+ `(default
+ ((((type graphic tty) (min-colors 16777216))
+ (:foreground ,(mango-theme-color 'foreground 'gui)
+ :background ,(mango-theme-color 'background 'gui)))
+ (((type tty) (min-colors 256))
+ (:foreground ,(mango-theme-color 'foreground '256)
+ :background ,(mango-theme-color 'background '256)))
+ (((type tty))
+ (:foreground ,(mango-theme-color 'foreground '16)
+ :background ,(mango-theme-color 'background '16)))))
+ `(fringe
+ ((t (:inherit default))))
+
+ ;; Lines
+ `(hl-line
+ ((((type graphic tty) (min-colors 16777216))
+ (:background ,(mango-theme-color 'background-faint 'gui)))
+ (((type tty) (min-colors 256))
+ (:background ,(mango-theme-color 'background-faint '256)))
+ (((type tty))
+ (:background ,(mango-theme-color 'background-faint '16)))))
+ `(region
+ ((((type graphic tty) (min-colors 16777216))
+ (:background ,(mango-theme-color 'middleground 'gui)))
+ (((type tty) (min-colors 256))
+ (:background ,(mango-theme-color 'middleground '256)))
+ (((type tty))
+ (:background ,(mango-theme-color 'middleground '16)))))
+ `(header-line
+ ((((type graphic tty) (min-colors 16777216))
+ (:background ,(mango-theme-color 'middleground 'gui)))
+ (((type tty) (min-colors 256))
+ (:background ,(mango-theme-color 'middleground '256)))
+ (((type tty))
+ (:background ,(mango-theme-color 'middleground '16)))))
+ `(mode-line-active
+ ((t (:inherit header-line))))
+ `(mode-line-inactive
+ ((((type graphic tty) (min-colors 16777216))
+ (:background ,(mango-theme-color 'background-cool 'gui) :weight light))
+ (((type tty) (min-colors 256))
+ (:background ,(mango-theme-color 'background-cool '256) :weight light))
+ (((type tty))
+ (:background ,(mango-theme-color 'background-cool '16) :weight light))))
+ `(window-divider
+ ((((type graphic tty) (min-colors 16777216))
+ (:foreground ,(mango-theme-color 'background-cool 'gui)))
+ (((type tty) (min-colors 256))
+ (:foreground ,(mango-theme-color 'background-cool '256)))
+ (((type tty))
+ (:foreground ,(mango-theme-color 'background-cool '16)))))
+ `(window-divider-first-pixel
+ ((((type graphic tty) (min-colors 16777216))
+ (:foreground ,(mango-theme-color 'background-cool 'gui)))
+ (((type tty) (min-colors 256))
+ (:foreground ,(mango-theme-color 'background-cool '256)))
+ (((type tty))
+ (:foreground ,(mango-theme-color 'background-cool '16)))))
+ `(window-divider-last-pixel
+ ((((type graphic tty) (min-colors 16777216))
+ (:foreground ,(mango-theme-color 'background-cool 'gui)))
+ (((type tty) (min-colors 256))
+ (:foreground ,(mango-theme-color 'background-cool '256)))
+ (((type tty))
+ (:foreground ,(mango-theme-color 'background-cool '16)))))
+
+ ;; Line Numbers
+ `(line-number
+ ((((type graphic tty) (min-colors 16777216))
+ (:foreground ,(mango-theme-color 'background-faint 'gui)
+ :background ,(mango-theme-color 'background 'gui)))
+ (((type tty) (min-colors 256))
+ (:foreground ,(mango-theme-color 'background-faint '256)
+ :background ,(mango-theme-color 'background '256)))
+ (((type tty))
+ (:foreground ,(mango-theme-color 'background-faint '16)
+ :background ,(mango-theme-color 'background '16)))))
+ `(line-number-current-line
+ ((((type graphic tty) (min-colors 16777216))
+ (:foreground ,(mango-theme-color 'salmon 'gui)
+ :background ,(mango-theme-color 'background 'gui) :weight bold))
+ (((type tty) (min-colors 256))
+ (:foreground ,(mango-theme-color 'salmon '256)
+ :background ,(mango-theme-color 'background '256) :weight bold))
+ (((type tty))
+ (:foreground ,(mango-theme-color 'salmon '16)
+ :background ,(mango-theme-color 'background '16) :weight bold))))
+
+ ;; Documentation
+ `(font-lock-comment-face
+ ((((type graphic tty) (min-colors 16777216))
+ (:foreground ,(mango-theme-color 'khaki 'gui) :weight semi-bold))
+ (((type tty) (min-colors 256))
+ (:foreground ,(mango-theme-color 'khaki '256) :weight semi-bold))
+ (((type tty))
+ (:foreground ,(mango-theme-color 'khaki '16) :weight semi-bold))))
+ `(font-lock-doc-face
+ ((((type graphic tty) (min-colors 16777216))
+ (:foreground ,(mango-theme-color 'disabled 'gui)))
+ (((type tty) (min-colors 256))
+ (:foreground ,(mango-theme-color 'disabled '256)))
+ (((type tty))
+ (:foreground ,(mango-theme-color 'disabled '16)))))
+
+ ;; Modeline
+ `(mm-modeline-overwrite-face ((t (:weight bold))))
+ `(mm-modeline-readonly-face ((t (:weight bold))))
+ `(mm-modeline-buffer-name-face ((t (:inherit font-lock-constant-face))))
+ `(mm-modeline-buffer-modified-face ((t (:inherit shadow))))
+ `(mm-modeline-major-mode-name-face ((t (:weight bold))))
+ `(mm-modeline-major-mode-symbol-face ((t (:inherit shadow))))
+ `(mm-modeline-git-branch-face ((t (:inherit font-lock-constant-face))))
+ `(mm-modeline-narrow-face
+ ((((type graphic tty) (min-colors 16777216))
+ (:background ,(mango-theme-color 'dark-red 'gui) :box ,(mango-theme-color 'dark-red 'gui) :weight bold))
+ (((type tty) (min-colors 256))
+ (:background ,(mango-theme-color 'dark-red '256) :box ,(mango-theme-color 'dark-red '256) :weight bold))
+ (((type tty))
+ (:background ,(mango-theme-color 'dark-red '16) :box ,(mango-theme-color 'dark-red '16) :weight bold))))
+
+ ;; Core Language
+ `(font-lock-builtin-face ((t (:inherit font-lock-preprocessor-face))))
+ `(font-lock-keyword-face
+ ((((type graphic tty) (min-colors 16777216))
+ (:foreground ,(mango-theme-color 'violet 'gui)))
+ (((type tty) (min-colors 256))
+ (:foreground ,(mango-theme-color 'violet '256)))
+ (((type tty))
+ (:foreground ,(mango-theme-color 'violet '16)))))
+ `(font-lock-type-face
+ ((((type graphic tty) (min-colors 16777216))
+ (:foreground ,(mango-theme-color 'celestial-blue 'gui)))
+ (((type tty) (min-colors 256))
+ (:foreground ,(mango-theme-color 'celestial-blue '256)))
+ (((type tty))
+ (:foreground ,(mango-theme-color 'celestial-blue '16)))))
+
+ ;; Function-likes
+ `(font-lock-function-name-face
+ ((((type graphic tty) (min-colors 16777216))
+ (:foreground ,(mango-theme-color 'khaki 'gui)))
+ (((type tty) (min-colors 256))
+ (:foreground ,(mango-theme-color 'khaki '256)))
+ (((type tty))
+ (:foreground ,(mango-theme-color 'khaki '16)))))
+ `(font-lock-preprocessor-face
+ ((((type graphic tty) (min-colors 16777216))
+ (:foreground ,(mango-theme-color 'magenta 'gui) :weight bold))
+ (((type tty) (min-colors 256))
+ (:foreground ,(mango-theme-color 'magenta '256) :weight bold))
+ (((type tty))
+ (:foreground ,(mango-theme-color 'magenta '16) :weight bold))))
+
+ ;; Variables
+ `(font-lock-constant-face ((t (:inherit font-lock-variable-name-face :weight bold))))
+ `(font-lock-variable-name-face
+ ((((type graphic tty) (min-colors 16777216))
+ (:foreground ,(mango-theme-color 'pale-azure 'gui)))
+ (((type tty) (min-colors 256))
+ (:foreground ,(mango-theme-color 'pale-azure '256)))
+ (((type tty))
+ (:foreground ,(mango-theme-color 'pale-azure '16)))))
+
+ ;; Other literals
+ `(help-key-binding ((t (:inherit font-lock-constant-face))))
+ `(font-lock-string-face
+ ((((type graphic tty) (min-colors 16777216))
+ (:foreground ,(mango-theme-color 'salmon 'gui)))
+ (((type tty) (min-colors 256))
+ (:foreground ,(mango-theme-color 'salmon '256)))
+ (((type tty))
+ (:foreground ,(mango-theme-color 'salmon '16)))))
+ `(font-lock-number-face
+ ((((type graphic tty) (min-colors 16777216))
+ (:foreground ,(mango-theme-color 'salmon 'gui)))
+ (((type tty) (min-colors 256))
+ (:foreground ,(mango-theme-color 'salmon '256)))
+ (((type tty))
+ (:foreground ,(mango-theme-color 'salmon '16)))))
+
+ ;; Org Mode
+ `(org-quote ((t (:inherit org-block :slant italic))))
+ `(org-code
+ ((((type graphic tty) (min-colors 16777216))
+ (:foreground ,(mango-theme-color 'salmon 'gui)))
+ (((type tty) (min-colors 256))
+ (:foreground ,(mango-theme-color 'salmon '256)))
+ (((type tty))
+ (:foreground ,(mango-theme-color 'salmon '16)))))
+ `(org-verbatim
+ ((((type graphic tty) (min-colors 16777216))
+ (:foreground ,(mango-theme-color 'lime 'gui)))
+ (((type tty) (min-colors 256))
+ (:foreground ,(mango-theme-color 'lime '256)))
+ (((type tty))
+ (:foreground ,(mango-theme-color 'lime '16)))))
+ `(org-block
+ ((((type graphic tty) (min-colors 16777216))
+ (:background ,(mango-theme-color 'background-cool 'gui)))
+ (((type tty) (min-colors 256))
+ (:background ,(mango-theme-color 'background-cool '256)))
+ (((type tty))
+ (:background ,(mango-theme-color 'background-cool '16)))))
+ `(org-hide
+ ((((type graphic tty) (min-colors 16777216))
+ (:foreground ,(mango-theme-color 'background 'gui)))
+ (((type tty) (min-colors 256))
+ (:foreground ,(mango-theme-color 'background '256)))
+ (((type tty))
+ (:foreground ,(mango-theme-color 'background '16)))))
+
+ ;; Info Page
+ `(Info-quoted ((t (:inherit default))))
+
+ ;; Magit
+ `(magit-diff-context-highlight ((t (:inherit hl-line))))
+ `(magit-section-highlight ((t (:inherit hl-line))))
+ `(magit-diff-hunk-heading
+ ((((type graphic tty) (min-colors 16777216))
+ (:background ,(mango-theme-color 'background-cool 'gui)))
+ (((type tty) (min-colors 256))
+ (:background ,(mango-theme-color 'background-cool '256)))
+ (((type tty))
+ (:background ,(mango-theme-color 'background-cool '16)))))
+ `(magit-diff-hunk-heading-highlight
+ ((((type graphic tty) (min-colors 16777216))
+ (:background ,(mango-theme-color 'middleground 'gui)))
+ (((type tty) (min-colors 256))
+ (:background ,(mango-theme-color 'middleground '256)))
+ (((type tty))
+ (:background ,(mango-theme-color 'middleground '16)))))
+ `(git-commit-summary
+ ((((type graphic tty) (min-colors 16777216))
+ (:foreground ,(mango-theme-color 'khaki 'gui)))
+ (((type tty) (min-colors 256))
+ (:foreground ,(mango-theme-color 'khaki '256)))
+ (((type tty))
+ (:foreground ,(mango-theme-color 'khaki '16)))))
+ `(git-commit-overlong-summary
+ ((((type graphic tty) (min-colors 16777216))
+ (:foreground ,(mango-theme-color 'foreground 'gui)
+ :background ,(mango-theme-color 'red 'gui) :weight bold))
+ (((type tty) (min-colors 256))
+ (:foreground ,(mango-theme-color 'foreground '256)
+ :background ,(mango-theme-color 'red '256) :weight bold))
+ (((type tty))
+ (:foreground ,(mango-theme-color 'foreground '16)
+ :background ,(mango-theme-color 'red '16) :weight bold))))
+
+ ;; Vertico
+ `(vertico-current ((t (:inherit hl-line))))
+
+ ;; Marginalia
+ `(mm-diffstat-counter-added ((t (:foreground "green" :weight bold))))
+ `(mm-diffstat-counter-removed ((t (:foreground "red" :weight bold))))
+ `(marginalia-documentation
+ ((((type graphic tty) (min-colors 16777216))
+ (:foreground ,(mango-theme-color 'disabled 'gui) :underline nil))
+ (((type tty) (min-colors 256))
+ (:foreground ,(mango-theme-color 'disabled '256) :underline nil))
+ (((type tty))
+ (:foreground ,(mango-theme-color 'disabled '16) :underline nil))))
+
+ ;; Tempel
+ `(tempel-default
+ ((((type graphic tty) (min-colors 16777216))
+ (:slant italic :background ,(mango-theme-color 'middleground 'gui)))
+ (((type tty) (min-colors 256))
+ (:slant italic :background ,(mango-theme-color 'middleground '256)))
+ (((type tty))
+ (:slant italic :background ,(mango-theme-color 'middleground '16)))))
+ `(tempel-field
+ ((((type graphic tty) (min-colors 16777216))
+ (:slant italic :background ,(mango-theme-color 'middleground 'gui)))
+ (((type tty) (min-colors 256))
+ (:slant italic :background ,(mango-theme-color 'middleground '256)))
+ (((type tty))
+ (:slant italic :background ,(mango-theme-color 'middleground '16)))))
+ `(tempel-form
+ ((((type graphic tty) (min-colors 16777216))
+ (:slant italic :background ,(mango-theme-color 'middleground 'gui)))
+ (((type tty) (min-colors 256))
+ (:slant italic :background ,(mango-theme-color 'middleground '256)))
+ (((type tty))
+ (:slant italic :background ,(mango-theme-color 'middleground '16))))))
+
+(provide-theme 'mango)