Files
lypacamacs/themes/cutarv42-theme.el
T

181 lines
8.6 KiB
EmacsLisp

;;; cutarv42-theme.el --- A high-contrast light theme with blue/pink accents -*- lexical-binding: t; no-byte-compile: t; -*-
(deftheme cutarv42
"A high-contrast light theme with blue/pink accents, optimized for clarity and syntax highlighting.")
(let* (;; --- 1. Primitive Palette (Raw Colors) ---
(pure-white "#f8f8ff")
(pure-black "#010101")
(deep-blue "#007cbf")
(mid-blue "#2374de")
(soft-pink "#ef89df")
(deep-purple "#a64dd6")
(raw-magenta "#b05197")
(burnt-amber "#e58e40")
(duck-blue "#007a94")
(forest-green "#429e66")
(bright-green "#2cd45c")
(crimson-red "#cf3f29")
(soft-red "#f07b69")
(deep-orange "#ee7722")
(light-blue "#7cc9f2")
(light-grey "#f9f9f9")
(mid-grey "#888888")
(dark-grey "#444444")
(faint-purple "#eeccee")
;; --- 2. Semantic Palette (Functional Roles) ---
;; Base UI
(bg-main pure-white)
(fg-main pure-black)
(ui-accent soft-pink)
(ui-hl-line faint-purple)
(ui-selection light-blue)
(ui-border raw-magenta)
(ui-muted mid-grey)
;; Syntax Roles
(syntax-keyword duck-blue)
(syntax-string forest-green)
(syntax-variable mid-blue)
(syntax-type deep-purple)
(syntax-constant burnt-amber)
(syntax-builtin deep-orange)
(syntax-comment "#666666") ;; Standard grey for comments
(syntax-comment-d bright-green) ;; Delimiter color
(syntax-function deep-blue)
;; Status / Feedback
(status-error crimson-red)
(status-warning soft-red)
(status-info deep-orange)
(status-success bright-green)
(status-highlight deep-blue)
;; Theme Class
(class '((class color) (min-colors 256))))
(custom-theme-set-faces
'cutarv42
;; --- Core UI ---
`(default ((,class (:background ,bg-main :foreground ,fg-main))))
`(cursor ((,class (:background ,bg-main :foreground ,bg-main))))
`(fringe ((,class (:background ,bg-main :foreground ,status-highlight))))
`(region ((,class (:background ,ui-accent))))
`(highlight ((,class (:background ,ui-selection :foreground ,bg-main))))
`(hl-line ((,class (:background ,ui-hl-line :extend t))))
`(link ((,class (:foreground ,syntax-keyword :underline t))))
`(link-visited ((,class (:foreground ,syntax-type :underline t))))
`(minibuffer-prompt ((,class (:foreground ,status-highlight :weight bold))))
`(vertical-border ((,class (:foreground ,ui-border))))
;; --- Syntax Highlighting (Font Lock) ---
`(font-lock-comment-face ((,class (:foreground ,syntax-comment :slant italic))))
`(font-lock-doc-face ((,class (:inherit font-lock-comment-face))))
`(font-lock-comment-delimiter-face ((,class (:foreground ,syntax-comment-d :slant italic))))
`(font-lock-string-face ((,class (:foreground ,syntax-string))))
`(font-lock-type-face ((,class (:foreground ,syntax-type))))
`(font-lock-keyword-face ((,class (:foreground ,syntax-keyword :weight bold))))
`(font-lock-function-name-face ((,class (:foreground ,syntax-function :weight bold))))
`(font-lock-variable-name-face ((,class (:foreground ,syntax-variable))))
`(font-lock-constant-face ((,class (:foreground ,syntax-constant))))
`(font-lock-builtin-face ((,class (:foreground ,syntax-builtin))))
`(font-lock-warning-face ((,class (:foreground ,status-warning :weight bold))))
`(font-lock-negation-char-face ((,class (:foreground ,status-error))))
`(font-lock-regexp-grouping-backslash ((,class (:foreground ,status-info))))
`(font-lock-regexp-grouping-construct ((,class (:inherit font-lock-constant-face))))
;; --- Mode-line ---
`(mode-line ((,class (:background ,ui-accent :foreground ,bg-main))))
`(mode-line-inactive ((,class (:background ,ui-selection :foreground ,fg-main))))
;:box (:line-width 1 :color ,syntax-keyword)
;; --- Search & Isearch ---
`(isearch ((,class (:inherit hl-line))))
`(isearch-fail ((,class (:inherit show-paren-mismatch))))
`(lazy-highlight ((,class (:background ,status-info :foreground ,bg-main))))
;; --- Line Numbers ---
`(line-number ((,class (:foreground ,fg-main :background ,ui-selection))))
`(line-number-current-line ((,class (:inherit mode-line :weight bold))))
;; --- Package Specifics ---
;; Doom Modeline
`(doom-modeline-bar ((,class (:background ,ui-accent :foreground ,fg-main))))
`(doom-modeline-buffer-file ((,class (:foreground ,fg-main :weight bold))))
`(doom-modeline-buffer-path ((,class (:foreground ,fg-main :weight bold))))
`(doom-modeline-buffer-modified ((,class (:foreground ,status-info :weight bold))))
`(doom-modeline-debug ((,class (:inherit font-lock-warning-face))))
`(doom-modeline-info ((,class (:inherit font-lock-delimiter-face))))
`(doom-modeline-warning ((,class (:inherit font-lock-warning-face))))
`(doom-modeline-error ((,class (:inherit error))))
;; Vertico / Marginalia
`(vertico-current ((,class (:inherit line-number-current-line))))
`(marginalia-documentation ((,class (:inherit font-lock-comment-face))))
;; Magit
`(magit-branch-local ((,class (:foreground ,syntax-function :weight bold))))
`(magit-branch-remote ((,class (:foreground ,syntax-string :weight bold))))
`(magit-hash ((,class (:foreground ,status-highlight))))
`(magit-item-highlight ((,class (:background ,ui-selection))))
`(magit-diff-added ((,class (:foreground ,status-success :background unspecified))))
`(magit-diff-removed ((,class (:foreground ,status-error :background unspecified))))
`(magit-diff-context-highlight ((,class (:background ,status-highlight :foreground ,fg-main))))
`(magit-section-heading ((,class (:foreground ,ui-selection :weight bold :underline t))))
;; Tree-sitter
`(tree-sitter-hl-face:function.call ((,class (:foreground ,ui-accent))))
`(tree-sitter-hl-face:method.call ((,class (:foreground ,ui-accent))))
`(tree-sitter-hl-face:type ((,class (:foreground ,syntax-function))))
`(tree-sitter-hl-face:property ((,class (:foreground ,ui-selection))))
`(tree-sitter-hl-face:parameter ((,class (:foreground ,status-info))))
`(tree-sitter-hl-face:escape ((,class (:foreground ,status-warning))))
;; Flycheck / LSP
`(flycheck-error ((,class (:underline (:style wave :color ,status-error)))))
`(flycheck-warning ((,class (:underline (:style wave :color ,status-info)))))
`(flycheck-info ((,class (:underline (:style wave :color ,syntax-keyword)))))
`(lsp-face-highlight-textual ((,class (:background ,ui-selection))))
;; Misc
`(show-paren-match ((,class (:background ,syntax-keyword :foreground ,bg-main :weight bold))))
`(show-paren-mismatch ((,class (:background ,status-error :foreground ,fg-main :weight bold))))
`(success ((,class (:foreground ,status-success))))
`(error ((,class (:foreground ,status-error :weight bold))))
`(warning ((,class (:foreground ,status-warning))))
`(header-line ((,class (:background ,status-highlight :foreground ,fg-main))))
;; Whitespace mode
`(whitespace-indentation ((,class (:background ,ui-muted :foreground ,status-warning ))))
`(whitespace-tab ((,class (:background ,light-grey :foreground ,syntax-constant))))
`(whitespace-space ((,class (:background ,light-grey :foreground ,status-info))))
`(whitespace-trailing ((,class (:background ,status-error :foreground ,status-info))))
`(whitespace-line ((,class (:background ,light-grey))))
;; Org Mode
`(org-level-1 ((,class (:foreground ,ui-accent :weight bold :height 1.2))))
`(org-level-2 ((,class (:foreground ,syntax-keyword :weight bold :height 1.1))))
`(org-level-3 ((,class (:foreground ,status-success :weight bold))))
`(org-level-4 ((,class (:foreground ,ui-selection :weight bold))))
`(org-level-5 ((,class (:foreground ,syntax-type :weight bold))))
`(org-todo ((,class (:foreground ,status-warning :weight bold :box t))))
`(org-done ((,class (:foreground ,status-success :weight bold :box t))))
`(org-date ((,class (:foreground ,syntax-keyword))))
`(org-link ((,class (:foreground ,syntax-type :underline t))))
`(org-code ((,class (:foreground ,status-info :background ,bg-main))))
`(org-block ((,class (:background ,bg-main :foreground ,fg-main :extend t))))
`(org-block-begin-line ((,class (:foreground ,status-highlight :background ,bg-main :extend t))))
))
;;;###autoload
(and load-file-name
(boundp 'custom-theme-load-path)
(add-to-list 'custom-theme-load-path
(file-name-as-directory (file-name-directory load-file-name))))
(provide-theme 'cutarv42)
;;; cutarv41-theme.el ends here