;;; cutarv33-theme.el --- A high-contrast dark theme with blue/pink accents -*- lexical-binding: t; no-byte-compile: t; -*- (deftheme cutarv33 "High-contrast dark theme with blue/pink accents. Optimized for syntax highlighting and UI clarity based on the Custom Terminal palette.") (let ((class '((class color) (min-colors 89))) ;; --- BASE UI --- (bg "#f8f8ff") ;; Default background (fg "#000000") ;; Default foreground (cursor "#f8f8ff") ;; Cursor bg (matches `bg`; visibility depends on `cursor-type`) (selection "#aaafff") ;; Region/selected text background ;;(selection-fg "#000000") ;; Region/selected text foreground ;; --- ANSI NORMAL --- (dark_blue "#007cbf" ) ;; Fringe, minibuffer prompts, function names, line numbers, inactive tab borders (red "#cf3f29" ) ;; Errors, negation chars, failed search (`isearch-fail`) (medium_blue "#2374de" ) ;; Keywords, active hyperlinks (orange "#c75e10" ) ;; Constants, lazy search highlights, debug indicators (magenta "#b05197" ) ;; Strings, variables, UI dividers (`vertical-border`) (green "#429e66" ) ;; Docstrings, comment delimiters, info/status indicators (cyan "#129cc9" ) ;; Types/Classes (purple "#a64dd6" ) ;; Built-ins, visited links ;; --- ANSI BRIGHT --- (light_blue "#7cc9f2") ;; Inactive mode-line/tabs background (shares hex with `selection`) (light_red "#f07b69") ;; Warnings, builtin, regex constructs (accent_blue "#6f9ff2") ;; (Currently unused in faces) (yellow "#f0b94a") ;; Active search (`isearch`), regex backslashes, modified buffer status, warnings (accent_pink "#EF89DF") ;; Active mode-line/tabs, modeline accent bar (bright_green "#2cd45c") ;; (Currently unused in faces) (bright_cyan "#11ddee") ;; hl-line hl-tab (light_purple "#c8a0f2")) ;; (Currently unused in faces) (custom-theme-set-faces 'cutarv33 ;; --- CORE UI --- `(default ((,class (:background ,bg :foreground ,fg)))) `(cursor ((,class (:background ,bg :foreground ,bg)))) `(fringe ((,class (:background ,bg :foreground ,dark_blue)))) `(region ((,class (:background ,selection)))) `(highlight ((,class (:background ,light_blue :foreground ,bg)))) `(hl-line ((,class (:background ,light_purple :extend t)))) ;; Using dark_blue for line highlight dimness `(link ((,class (:foreground ,medium_blue :underline t)))) `(link-visited ((,class (:foreground ,purple :underline t)))) `(minibuffer-prompt ((,class (:foreground ,dark_blue :weight bold)))) `(vertical-border ((,class (:foreground ,magenta)))) ;; "UI dividers" ;; --- SYNTAX HIGHLIGHTING (Font Lock) --- ;; Comments: ansi_0 (Dark Blue) `(font-lock-comment-face ((,class (:foreground ,green :slant italic)))) `(font-lock-comment-delimiter-face ((,class (:foreground ,bright_green :slant italic)))) ;; Keywords: ansi_7 (Purple) `(font-lock-keyword-face ((,class (:foreground ,medium_blue :weight bold)))) ;; Strings: ansi_4 (Magenta) `(font-lock-string-face ((,class (:foreground ,magenta)))) `(font-lock-regexp-grouping-backslash ((,class (:foreground ,yellow)))) `(font-lock-regexp-grouping-construct ((,class (:foreground ,light_red)))) ;; Functions: Using Accent Pink (ansi_12) for better visibility as "Primary Accent" `(font-lock-function-name-face ((,class (:foreground ,cyan :weight bold)))) ;; Variables: Default foreground or slightly dimmed `(font-lock-variable-name-face ((,class (:foreground ,medium_blue)))) ;; Types: ansi_6 (Cyan) `(font-lock-type-face ((,class (:foreground ,purple)))) ;; Constants: ansi_3 (Orange) `(font-lock-constant-face ((,class (:foreground ,light_red)))) `(font-lock-builtin-face ((,class (:foreground ,orange)))) ;; Same as keywords usually ;; Doc & Warnings `(font-lock-doc-face ((,class (:inherit font-lock-comment-face :foreground ,green)))) `(font-lock-warning-face ((,class (:foreground ,light_red :weight bold)))) `(font-lock-negation-char-face ((,class (:foreground ,red)))) ;; --- MODELINE (Tabs UI Mapping) --- ;; Active Tab: Accent Pink `(mode-line ((,class (:background ,accent_pink :foreground ,bg)))) ;; Inactive Tab: Light Blue `(mode-line-inactive ((,class (:background ,light_blue :foreground ,fg :box (:line-width 1 :color ,accent_blue))))) `(mode-line-buffer-id ((,class (:weight bold)))) `(mode-line-highlight ((,class (:box (:line-width 2 :color ,fg))))) ;; --- SEARCH & ISEARCH --- ;; Search Matches: Yellow (ansi_11) `(isearch ((,class (:background ,yellow :foreground ,bg :weight bold)))) `(isearch-fail ((,class (:background ,red :foreground ,fg)))) `(lazy-highlight ((,class (:background ,orange :foreground ,bg)))) ;; --- LINE NUMBERS --- `(line-number ((,class (:foreground ,light_blue :background ,fg)))) `(line-number-current-line ((,class (:foreground ,bg :background ,accent_pink :weight bold)))) ;; --- DIY (Doom Emacs Specifics) --- `(doom-modeline-bar ((,class (:background ,accent_pink :foreground ,fg)))) `(doom-modeline-buffer-file ((,class (:foreground ,fg :weight bold)))) `(doom-modeline-buffer-path ((,class (:foreground ,fg :weight bold)))) `(doom-modeline-buffer-modified ((,class (:foreground ,yellow :weight bold)))) `(doom-modeline-debug ((,class (:foreground ,orange)))) `(doom-modeline-info ((,class (:foreground ,green)))) `(doom-modeline-warning ((,class (:foreground ,yellow)))) `(doom-modeline-error ((,class (:foreground ,red)))) ;; --- ORG MODE --- `(org-level-1 ((,class (:foreground ,accent_pink :weight bold :height 1.2)))) `(org-level-2 ((,class (:foreground ,accent_blue :weight bold :height 1.1)))) `(org-level-3 ((,class (:foreground ,bright_green :weight bold)))) `(org-level-4 ((,class (:foreground ,bright_cyan :weight bold)))) `(org-level-5 ((,class (:foreground ,light_purple :weight bold)))) `(org-todo ((,class (:foreground ,light_red :weight bold :box t)))) `(org-done ((,class (:foreground ,bright_green :weight bold :box t)))) `(org-date ((,class (:foreground ,medium_blue)))) `(org-link ((,class (:foreground ,light_purple :underline t)))) ;; "markdown links" -> light_purple `(org-code ((,class (:foreground ,orange :background ,bg)))) `(org-block ((,class (:background ,bg :foreground ,fg :extend t)))) `(org-block-begin-line ((,class (:foreground ,dark_blue :background ,bg :extend t)))) ;; --- MAGIT / GIT --- `(magit-branch-local ((,class (:foreground ,cyan :weight bold)))) `(magit-branch-remote ((,class (:foreground ,green :weight bold)))) `(magit-hash ((,class (:foreground ,dark_blue)))) `(magit-item-highlight ((,class (:background ,selection)))) `(magit-diff-added ((,class (:foreground ,bright_green :background unspecified)))) `(magit-diff-removed ((,class (:foreground ,light_red :background unspecified)))) `(magit-diff-context-highlight ((,class (:background ,dark_blue :foreground ,fg)))) `(magit-section-heading ((,class (:foreground ,bright_cyan :weight bold :underline t)))) ;; --- TREE-SITTER --- `(tree-sitter-hl-face:function.call ((,class (:foreground ,accent_pink)))) `(tree-sitter-hl-face:method.call ((,class (:foreground ,accent_pink)))) `(tree-sitter-hl-face:type ((,class (:foreground ,cyan)))) `(tree-sitter-hl-face:property ((,class (:foreground ,light_blue)))) `(tree-sitter-hl-face:parameter ((,class (:foreground ,orange)))) `(tree-sitter-hl-face:escape ((,class (:foreground ,light_red)))) ;; --- FLYCHECK / LSP --- `(flycheck-error ((,class (:underline (:style wave :color ,red))))) `(flycheck-warning ((,class (:underline (:style wave :color ,orange))))) `(flycheck-info ((,class (:underline (:style wave :color ,medium_blue))))) `(lsp-face-highlight-textual ((,class (:background ,selection)))) ;; --- DASHBOARD --- `(doom-dashboard-menu-desc ((,class (:foreground ,accent_blue)))) `(doom-dashboard-banner ((,class (:foreground ,accent_pink)))) ;; --- MISC --- `(show-paren-match ((,class (:background ,accent_blue :foreground ,bg :weight bold)))) `(show-paren-mismatch ((,class (:background ,red :foreground ,fg :weight bold)))) `(success ((,class (:foreground ,green)))) `(error ((,class (:foreground ,red :weight bold)))) `(warning ((,class (:foreground ,orange)))) `(header-line ((,class (:background ,dark_blue :foreground ,fg)))))) ;;;###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 'cutarv33) ;;; cutarv33-theme.el ends here