summaryrefslogtreecommitdiff
path: root/.config/emacs/mango-theme.el
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2023-08-17 08:17:01 +0200
committerThomas Voss <mail@thomasvoss.com> 2023-08-17 08:17:01 +0200
commitbe7ab7767a3674c891c4c58783d70276bd423ab7 (patch)
tree880783d25d6062557c610695fa4f6ddcff0b8f7f /.config/emacs/mango-theme.el
parent195d099351c6fec292b60ac341ef8a47be6c2577 (diff)
emacs: Add my own custom Emacs theme
Diffstat (limited to '.config/emacs/mango-theme.el')
-rw-r--r--.config/emacs/mango-theme.el130
1 files changed, 130 insertions, 0 deletions
diff --git a/.config/emacs/mango-theme.el b/.config/emacs/mango-theme.el
new file mode 100644
index 0000000..7e74d17
--- /dev/null
+++ b/.config/emacs/mango-theme.el
@@ -0,0 +1,130 @@
+;;; mango-theme.el --- Just your average dark theme -*- lexical-binding: t -*-
+
+;; Copyright © 2023 Thomas Voss
+
+;; Author: Thomas Voss <mail@thomasvoss.com>
+;; Maintainer: Thomas Voss <mail@thomasvoss.com>
+;; URL: https://git.sr.ht/~mango/mango-theme
+;; Mailing-List: https://lists.sr.ht/~mango/public-inbox
+
+;;; License:
+
+;; Permission to use, copy, modify, and/or distribute this software for any
+;; purpose with or without fee is hereby granted.
+;;
+;; THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+;; REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+;; AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+;; INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+;; LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+;; OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+;; PERFORMANCE OF THIS SOFTWARE.
+
+;;; Commentary:
+
+;; TODO
+
+;;; Code:
+
+(deftheme mango
+ "Just another dark theme because none of the other options out there were just
+as I would like them. Why try to fix someone elses themes when I make my own?")
+
+(defun mango-theme--get-color (name)
+ "Get the RGB value of the color NAME from ‘mango-theme-palette’"
+ (cadr (assq name mango-theme-palette)))
+
+(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) `((t ,(cdr spec)))))))
+ (reverse ret)))
+
+(defconst mango-theme-palette
+ '((foreground "#C5C8C6")
+ (background "#2B303B")
+ (background-cool "#363C4A")
+ (background-faint "#414859")
+ (middleground "#4F5561")
+ (disabled "#999999")
+ (pale-azure "#9CDCFE")
+ (celestial-blue "#569CD6")
+ (violet "#E57AE5")
+ (khaki "#F0E68C")
+ (lime "#B8F182")
+ (orange "#F1B282")
+ (citron "#ED97F5")))
+
+(mango-theme--generate-set-faces
+ ;; Standard Stuff
+ (default
+ :foreground ,(mango-theme--get-color 'foreground)
+ :background ,(mango-theme--get-color 'background))
+ (fringe
+ :inherit default)
+
+ ;; Lines
+ (hl-line
+ :background ,(mango-theme--get-color 'background-faint))
+ (region
+ :background ,(mango-theme--get-color 'middleground))
+ (mode-line
+ :background ,(mango-theme--get-color 'middleground))
+ (mode-line-inactive
+ :background ,(mango-theme--get-color 'background-cool)
+ :weight light)
+
+ ;; Line Numbers
+ (line-number
+ :background ,(mango-theme--get-color 'background-cool))
+ (line-number-current-line
+ :background ,(mango-theme--get-color 'background-cool)
+ :weight bold)
+
+ ;; Documentation
+ (font-lock-comment-face
+ :foreground ,(mango-theme--get-color 'disabled))
+ (font-lock-doc-face
+ :inherit font-lock-comment-face)
+
+ ;; Core Language
+ (font-lock-keyword-face
+ :foreground ,(mango-theme--get-color 'violet))
+ (font-lock-type-face
+ :foreground ,(mango-theme--get-color 'celestial-blue))
+ (font-lock-builtin-face
+ :inherit font-lock-preprocessor-face)
+
+ ;; Function-likes
+ (font-lock-function-name-face
+ :foreground ,(mango-theme--get-color 'khaki))
+ (font-lock-preprocessor-face
+ :foreground ,(mango-theme--get-color 'citron)
+ :weight bold)
+
+ ;; Variables
+ (font-lock-variable-name-face
+ :foreground ,(mango-theme--get-color 'pale-azure))
+ (font-lock-constant-face
+ :inherit font-lock-variable-name-face
+ :weight bold)
+
+ ;; Org Mode
+ (org-code
+ :foreground ,(mango-theme--get-color 'orange))
+ (org-verbatim
+ :foreground ,(mango-theme--get-color 'lime))
+ (org-block
+ :background ,(mango-theme--get-color 'background-cool))
+ (org-hide
+ :foreground ,(mango-theme--get-color 'background))
+
+ ;; Info Page
+ (Info-quoted
+ :inherit default))