This commit is contained in:
Your Name
2026-05-10 01:05:57 +02:00
commit f3cb5a6e26
19 changed files with 2741 additions and 0 deletions
+142
View File
@@ -0,0 +1,142 @@
;;; themes/MTF4-extended-theme.el -*- lexical-binding: t; -*-
;; MTF4-extended-theme.el
;; A brighter, high-contrast light theme based on MTF4 with extended color palette
(deftheme MTF4-extended
"A brighter, high-contrast light theme with extended color palette based on MTF4.")
(let (
;; Core colors - Bright high-contrast palette
(bg-primary "#FFFFFF")
(bg-secondary "#F8F9FA")
(bg-tertiary "#F0F0F0")
(bg-highlight "#E0E0FF")
(bg-region "#C0C0FF")
(fg-primary "#202020")
(fg-secondary "#444444")
(fg-tertiary "#666666")
(fg-comment "#8D8D84")
;; Syntax colors - Bright and distinct
(syntax-magenta "#EF89DF")
(syntax-blue "#508AE0")
(syntax-purple "#6434A3")
(syntax-green "#88D26E")
(syntax-teal "#008080")
(syntax-red "#FF6B6B")
(syntax-orange "#FFB347")
(syntax-cyan "#89DAFF")
;; UI colors
(ui-cursor "#6434A3") ; Purple cursor for visibility
(ui-fringe "#F8F9FA") ; Subtle fringe
(ui-mode-line "#508AE0") ; Bright blue mode line
(ui-mode-line-inactive "#C0C0C0")
(ui-search "#C0FFC0") ; Bright green search
(ui-search-fail "#FFC0C0") ; Bright red for failed search
)
(custom-theme-set-faces
'MTF4-extended
;; Basic faces - High contrast foundation
`(default ((t (:background ,bg-primary :foreground ,fg-primary))))
`(cursor ((t (:background ,ui-cursor))))
`(fringe ((t (:background ,ui-fringe))))
`(hl-line ((t (:background ,bg-highlight))))
`(highlight ((t (:background ,bg-highlight))))
`(region ((t (:background ,bg-region :foreground ,fg-primary))))
`(secondary-selection ((t (:background ,syntax-cyan :foreground ,fg-primary))))
`(lazy-highlight ((t (:background ,ui-search :foreground ,fg-primary))))
;; Mode line - Bright and clear
`(mode-line ((t (:foreground "white" :background ,ui-mode-line :box nil))))
`(mode-line-inactive ((t (:foreground ,fg-primary :background ,ui-mode-line-inactive :box nil))))
`(mode-line-buffer-id ((t (:foreground "white" :weight bold))))
`(mode-line-emphasis ((t (:foreground "white" :weight bold))))
`(mode-line-highlight ((t (:foreground "white"))))
;; Syntax highlighting - Bright, distinct colors
`(font-lock-builtin-face ((t (:foreground ,syntax-purple))))
`(font-lock-comment-face ((t (:foreground ,fg-comment :slant italic))))
`(font-lock-comment-delimiter-face ((t (:foreground ,fg-comment))))
`(font-lock-constant-face ((t (:foreground ,syntax-magenta))))
`(font-lock-doc-face ((t (:foreground ,syntax-green))))
`(font-lock-function-name-face ((t (:foreground ,syntax-blue))))
`(font-lock-keyword-face ((t (:foreground ,syntax-purple :weight bold))))
`(font-lock-string-face ((t (:foreground ,syntax-teal))))
`(font-lock-type-face ((t (:foreground ,syntax-green))))
`(font-lock-variable-name-face ((t (:foreground ,syntax-orange))))
`(font-lock-preprocessor-face ((t (:foreground ,syntax-purple))))
`(font-lock-warning-face ((t (:foreground ,syntax-red :weight bold))))
`(font-lock-error-face ((t (:foreground ,syntax-red :weight bold))))
;; Search and matching
`(isearch ((t (:background ,ui-search :foreground ,fg-primary))))
`(isearch-fail ((t (:background ,ui-search-fail :foreground ,fg-primary))))
`(match ((t (:background ,syntax-green :foreground ,bg-primary))))
;; Minibuffer
`(minibuffer-prompt ((t (:foreground ,syntax-blue :weight bold))))
;; Line numbers
`(line-number ((t (:foreground ,fg-comment :background ,bg-secondary))))
`(line-number-current-line ((t (:foreground ,syntax-blue :background ,bg-tertiary :weight bold))))
;; Diff
`(diff-added ((t (:background "#E0FFE0" :foreground ,syntax-green))))
`(diff-removed ((t (:background "#FFE0E0" :foreground ,syntax-red))))
`(diff-changed ((t (:background "#FFFFE0" :foreground ,syntax-orange))))
;; Whitespace
`(whitespace-line ((t (:foreground ,syntax-red :background "#FFFF88"))))
`(whitespace-tab ((t (:foreground "#E0E0E0" :background "white"))))
`(whitespace-hspace ((t (:foreground "#E0E0E0"))))
;; Links
`(link ((t (:foreground ,syntax-blue :underline t))))
`(link-visited ((t (:foreground ,syntax-purple :underline t))))
;; Org-mode
`(org-level-1 ((t (:foreground ,syntax-purple :weight bold :height 1.2))))
`(org-level-2 ((t (:foreground ,syntax-blue :weight bold))))
`(org-level-3 ((t (:foreground ,syntax-magenta :weight bold))))
`(org-done ((t (:foreground ,syntax-green :weight bold))))
`(org-todo ((t (:foreground ,syntax-red :weight bold))))
`(org-date ((t (:foreground ,syntax-teal))))
`(org-block ((t (:background ,bg-secondary :foreground ,fg-primary))))
`(org-code ((t (:foreground ,syntax-orange))))
;; Terminal compatibility
`(term-color-black ((t (:foreground ,fg-primary :background ,fg-primary))))
`(term-color-red ((t (:foreground ,syntax-red :background ,syntax-red))))
`(term-color-green ((t (:foreground ,syntax-green :background ,syntax-green))))
`(term-color-yellow ((t (:foreground ,syntax-orange :background ,syntax-orange))))
`(term-color-blue ((t (:foreground ,syntax-blue :background ,syntax-blue))))
`(term-color-magenta ((t (:foreground ,syntax-magenta :background ,syntax-magenta))))
`(term-color-cyan ((t (:foreground ,syntax-teal :background ,syntax-teal))))
`(term-color-white ((t (:foreground ,bg-primary :background ,bg-primary))))
;; Company (autocompletion)
`(company-tooltip ((t (:background ,bg-secondary :foreground ,fg-primary))))
`(company-tooltip-selection ((t (:background ,syntax-blue :foreground "white"))))
`(company-tooltip-common ((t (:foreground ,syntax-purple))))
`(company-scrollbar-bg ((t (:background ,bg-tertiary))))
`(company-scrollbar-fg ((t (:background ,fg-comment))))
;; Ivy/Helm
`(ivy-current-match ((t (:background ,syntax-blue :foreground "white"))))
`(ivy-minibuffer-match-face-1 ((t (:foreground ,fg-tertiary))))
`(ivy-minibuffer-match-face-2 ((t (:foreground ,syntax-purple :weight bold))))
`(ivy-minibuffer-match-face-3 ((t (:foreground ,syntax-magenta))))
`(ivy-minibuffer-match-face-4 ((t (:foreground ,syntax-green))))
;; Dired
`(dired-directory ((t (:foreground ,syntax-blue :weight bold))))
`(dired-flagged ((t (:foreground ,syntax-red))))
`(dired-symlink ((t (:foreground ,syntax-magenta))))
))
(provide-theme 'MTF4-extended)
+142
View File
@@ -0,0 +1,142 @@
;;; themes/MTF4-extended-theme.el -*- lexical-binding: t; -*-
;; MTF4-extended-theme.el
;; A brighter, high-contrast light theme based on MTF4 with extended color palette
(deftheme MTF4-extended
"A brighter, high-contrast light theme with extended color palette based on MTF4.")
(let (
;; Core colors - Bright high-contrast palette
(bg-primary "#FFFFFF")
(bg-secondary "#F8F9FA")
(bg-tertiary "#F0F0F0")
(bg-highlight "#E0E0FF")
(bg-region "#C0C0FF")
(fg-primary "#202020")
(fg-secondary "#444444")
(fg-tertiary "#666666")
(fg-comment "#8D8D84")
;; Syntax colors - Bright and distinct
(syntax-magenta "#EF89DF")
(syntax-blue "#508AE0")
(syntax-purple "#6434A3")
(syntax-green "#88D26E")
(syntax-teal "#008080")
(syntax-red "#FF6B6B")
(syntax-orange "#FFB347")
(syntax-cyan "#89DAFF")
;; UI colors
(ui-cursor "#6434A3") ; Purple cursor for visibility
(ui-fringe "#F8F9FA") ; Subtle fringe
(ui-mode-line "#508AE0") ; Bright blue mode line
(ui-mode-line-inactive "#C0C0C0")
(ui-search "#C0FFC0") ; Bright green search
(ui-search-fail "#FFC0C0") ; Bright red for failed search
)
(custom-theme-set-faces
'MTF4-extended
;; Basic faces - High contrast foundation
`(default ((t (:background ,bg-primary :foreground ,fg-primary))))
`(cursor ((t (:background ,ui-cursor))))
`(fringe ((t (:background ,ui-fringe))))
`(hl-line ((t (:background ,bg-highlight))))
`(highlight ((t (:background ,bg-highlight))))
`(region ((t (:background ,bg-region :foreground ,fg-primary))))
`(secondary-selection ((t (:background ,syntax-cyan :foreground ,fg-primary))))
`(lazy-highlight ((t (:background ,ui-search :foreground ,fg-primary))))
;; Mode line - Bright and clear
`(mode-line ((t (:foreground "white" :background ,ui-mode-line :box nil))))
`(mode-line-inactive ((t (:foreground ,fg-primary :background ,ui-mode-line-inactive :box nil))))
`(mode-line-buffer-id ((t (:foreground "white" :weight bold))))
`(mode-line-emphasis ((t (:foreground "white" :weight bold))))
`(mode-line-highlight ((t (:foreground "white"))))
;; Syntax highlighting - Bright, distinct colors
`(font-lock-builtin-face ((t (:foreground ,syntax-purple))))
`(font-lock-comment-face ((t (:foreground ,fg-comment :slant italic))))
`(font-lock-comment-delimiter-face ((t (:foreground ,fg-comment))))
`(font-lock-constant-face ((t (:foreground ,syntax-magenta))))
`(font-lock-doc-face ((t (:foreground ,syntax-green))))
`(font-lock-function-name-face ((t (:foreground ,syntax-blue))))
`(font-lock-keyword-face ((t (:foreground ,syntax-purple :weight bold))))
`(font-lock-string-face ((t (:foreground ,syntax-teal))))
`(font-lock-type-face ((t (:foreground ,syntax-green))))
`(font-lock-variable-name-face ((t (:foreground ,syntax-orange))))
`(font-lock-preprocessor-face ((t (:foreground ,syntax-purple))))
`(font-lock-warning-face ((t (:foreground ,syntax-red :weight bold))))
`(font-lock-error-face ((t (:foreground ,syntax-red :weight bold))))
;; Search and matching
`(isearch ((t (:background ,ui-search :foreground ,fg-primary))))
`(isearch-fail ((t (:background ,ui-search-fail :foreground ,fg-primary))))
`(match ((t (:background ,syntax-green :foreground ,bg-primary))))
;; Minibuffer
`(minibuffer-prompt ((t (:foreground ,syntax-blue :weight bold))))
;; Line numbers
`(line-number ((t (:foreground ,fg-comment :background ,bg-secondary))))
`(line-number-current-line ((t (:foreground ,syntax-blue :background ,bg-tertiary :weight bold))))
;; Diff
`(diff-added ((t (:background "#E0FFE0" :foreground ,syntax-green))))
`(diff-removed ((t (:background "#FFE0E0" :foreground ,syntax-red))))
`(diff-changed ((t (:background "#FFFFE0" :foreground ,syntax-orange))))
;; Whitespace
`(whitespace-line ((t (:foreground ,syntax-red :background "#FFFF88"))))
`(whitespace-tab ((t (:foreground "#E0E0E0" :background "white"))))
`(whitespace-hspace ((t (:foreground "#E0E0E0"))))
;; Links
`(link ((t (:foreground ,syntax-blue :underline t))))
`(link-visited ((t (:foreground ,syntax-purple :underline t))))
;; Org-mode
`(org-level-1 ((t (:foreground ,syntax-purple :weight bold :height 1.2))))
`(org-level-2 ((t (:foreground ,syntax-blue :weight bold))))
`(org-level-3 ((t (:foreground ,syntax-magenta :weight bold))))
`(org-done ((t (:foreground ,syntax-green :weight bold))))
`(org-todo ((t (:foreground ,syntax-red :weight bold))))
`(org-date ((t (:foreground ,syntax-teal))))
`(org-block ((t (:background ,bg-secondary :foreground ,fg-primary))))
`(org-code ((t (:foreground ,syntax-orange))))
;; Terminal compatibility
`(term-color-black ((t (:foreground ,fg-primary :background ,fg-primary))))
`(term-color-red ((t (:foreground ,syntax-red :background ,syntax-red))))
`(term-color-green ((t (:foreground ,syntax-green :background ,syntax-green))))
`(term-color-yellow ((t (:foreground ,syntax-orange :background ,syntax-orange))))
`(term-color-blue ((t (:foreground ,syntax-blue :background ,syntax-blue))))
`(term-color-magenta ((t (:foreground ,syntax-magenta :background ,syntax-magenta))))
`(term-color-cyan ((t (:foreground ,syntax-teal :background ,syntax-teal))))
`(term-color-white ((t (:foreground ,bg-primary :background ,bg-primary))))
;; Company (autocompletion)
`(company-tooltip ((t (:background ,bg-secondary :foreground ,fg-primary))))
`(company-tooltip-selection ((t (:background ,syntax-blue :foreground "white"))))
`(company-tooltip-common ((t (:foreground ,syntax-purple))))
`(company-scrollbar-bg ((t (:background ,bg-tertiary))))
`(company-scrollbar-fg ((t (:background ,fg-comment))))
;; Ivy/Helm
`(ivy-current-match ((t (:background ,syntax-blue :foreground "white"))))
`(ivy-minibuffer-match-face-1 ((t (:foreground ,fg-tertiary))))
`(ivy-minibuffer-match-face-2 ((t (:foreground ,syntax-purple :weight bold))))
`(ivy-minibuffer-match-face-3 ((t (:foreground ,syntax-magenta))))
`(ivy-minibuffer-match-face-4 ((t (:foreground ,syntax-green))))
;; Dired
`(dired-directory ((t (:foreground ,syntax-blue :weight bold))))
`(dired-flagged ((t (:foreground ,syntax-red))))
`(dired-symlink ((t (:foreground ,syntax-magenta))))
))
(provide-theme 'MTF4-extended)
+129
View File
@@ -0,0 +1,129 @@
;;; themes/MTX16.el -*- lexical-binding: t; -*-
;; my-extended-theme.el
;; A high-contrast Emacs theme based on the extended color palette
(deftheme MTX16 "A high-contrast theme with extended color palette")
(let (
;; Base colors - High contrast neutrals
(base00 "#eef0f0") ; Background
(base01 "#F8F9FA") ; Lighter background (status bars, line numbers)
(base02 "#F0F0F0") ; Selection background, current line
(base03 "#BBBBBB") ; Comments, invisible
(base04 "#8D8D84") ; Dark foreground (disabled)
(base05 "#666666") ; Default foreground (less important)
(base06 "#444444") ; Default foreground
(base07 "#333333") ; Strong foreground (important text)
(base08 "#FF6B6B") ; Red: errors, deleted
(base09 "#FFB347") ; Orange: warnings
(base0A "#88D26E") ; Green: success, strings
(base0B "#9EBD6E") ; Light green: strings alt
(base0C "#508AE0") ; Blue: functions, info
(base0D "#6434A3") ; Purple: keywords, variables
(base0E "#EF89DF") ; Magenta: constants, special
(base0F "#A080CA") ; Light purple: operators
;; Additional GUI-specific enhancements
(highlight "#CEF")
(region "#7DF")
(accent-strong "#508AE0")
(accent-subtle "#BEEFFF")
)
(custom-theme-set-faces
'MTX16
;; Basic faces
`(default ((t (:background ,base00 :foreground ,base07))))
`(cursor ((t (:background ,base07))))
`(fringe ((t (:background ,base01))))
`(highlight ((t (:background ,highlight))))
`(region ((t (:background ,region :foreground ,base07))))
`(secondary-selection ((t (:background ,accent-subtle))))
;; Mode line
`(mode-line ((t (:background ,base02 :foreground ,base07 :box nil))))
`(mode-line-inactive ((t (:background ,base01 :foreground ,base04 :box nil))))
`(mode-line-buffer-id ((t (:foreground ,base0D :weight bold))))
;; Font lock - syntax highlighting
`(font-lock-comment-face ((t (:foreground ,base03 :slant italic))))
`(font-lock-comment-delimiter-face ((t (:foreground ,base03))))
`(font-lock-doc-face ((t (:foreground ,base04))))
`(font-lock-string-face ((t (:foreground ,base0A))))
`(font-lock-constant-face ((t (:foreground ,base0E))))
`(font-lock-builtin-face ((t (:foreground ,base0F))))
`(font-lock-type-face ((t (:foreground ,base0D))))
`(font-lock-function-name-face ((t (:foreground ,base0C))))
`(font-lock-variable-name-face ((t (:foreground ,base06))))
`(font-lock-keyword-face ((t (:foreground ,base0D :weight bold))))
`(font-lock-preprocessor-face ((t (:foreground ,base0F))))
`(font-lock-warning-face ((t (:foreground ,base09 :weight bold))))
;; UI elements
`(minibuffer-prompt ((t (:foreground ,base0C :weight bold))))
`(link ((t (:foreground ,base0C :underline t))))
`(link-visited ((t (:foreground ,base0E :underline t))))
`(button ((t (:foreground ,base0C :underline t))))
`(header-line ((t (:background ,base01 :foreground ,base07))))
`(vertical-border ((t (:foreground ,base02))))
;; Search and matching
`(isearch ((t (:background ,base0E :foreground ,base00 :weight bold))))
`(isearch-fail ((t (:background ,base08))))
`(lazy-highlight ((t (:background ,accent-subtle :foreground ,base07))))
`(match ((t (:background ,base0A :foreground ,base00))))
;; Line numbers
`(line-number ((t (:foreground ,base03 :background ,base01))))
`(line-number-current-line ((t (:foreground ,base07 :background ,base02 :weight bold))))
;; Company (autocompletion)
`(company-tooltip ((t (:background ,base01 :foreground ,base07))))
`(company-tooltip-selection ((t (:background ,base0C :foreground ,base00))))
`(company-tooltip-common ((t (:foreground ,base0D))))
`(company-scrollbar-bg ((t (:background ,base02))))
`(company-scrollbar-fg ((t (:background ,base04))))
;; Org-mode
`(org-level-1 ((t (:foreground ,base0D :weight bold :height 1.2))))
`(org-level-2 ((t (:foreground ,base0C :weight bold))))
`(org-level-3 ((t (:foreground ,base0F :weight bold))))
`(org-done ((t (:foreground ,base0A :weight bold))))
`(org-todo ((t (:foreground ,base08 :weight bold))))
`(org-date ((t (:foreground ,base0E))))
`(org-special-keyword ((t (:foreground ,base03))))
`(org-block ((t (:background ,base01 :foreground ,base06))))
`(org-code ((t (:foreground ,base0B))))
;; Terminal specific adjustments
`(term-color-black ((t (:foreground ,base00 :background ,base00))))
`(term-color-red ((t (:foreground ,base08 :background ,base08))))
`(term-color-green ((t (:foreground ,base0A :background ,base0A))))
`(term-color-yellow ((t (:foreground ,base09 :background ,base09))))
`(term-color-blue ((t (:foreground ,base0C :background ,base0C))))
`(term-color-magenta ((t (:foreground ,base0E :background ,base0E))))
`(term-color-cyan ((t (:foreground ,base0B :background ,base0B))))
`(term-color-white ((t (:foreground ,base07 :background ,base07))))
;; Error and warning faces
`(error ((t (:foreground ,base08 :weight bold))))
`(warning ((t (:foreground ,base09 :weight bold))))
`(success ((t (:foreground ,base0A :weight bold))))
;; Dired
`(dired-directory ((t (:foreground ,base0C :weight bold))))
`(dired-flagged ((t (:foreground ,base08))))
`(dired-symlink ((t (:foreground ,base0E))))
;; Ivy/Helm (completion frameworks)
`(ivy-current-match ((t (:background ,base0C :foreground ,base00))))
`(ivy-minibuffer-match-face-1 ((t (:foreground ,base05))))
`(ivy-minibuffer-match-face-2 ((t (:foreground ,base0D :weight bold))))
`(ivy-minibuffer-match-face-3 ((t (:foreground ,base0E))))
`(ivy-minibuffer-match-face-4 ((t (:foreground ,base0A))))
))
;; Provide the theme
(provide-theme 'MTX16)
+222
View File
@@ -0,0 +1,222 @@
;;; camm1-theme.el --- Theme
;; Copyright (C) 2026 , Lvy
;; Author: Lvy
;; Version: 0.1
;; Package-Requires: ((emacs "24.1"))
;; Created with ThemeCreator, https://github.com/mswift42/themecreator.
;; This program is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;; This file is not part of Emacs.
;;; Commentary:
;;; camm1 theme created by Lvy in 2026
;;; Code:
(deftheme camm1)
(let ((class '((class color) (min-colors 89)))
(fg1 "#111")
(fg2 "#242424")
(fg3 "#373737")
(fg4 "#4a4a4a")
(fg6 "#0d0d0d")
(bg1 "#f9fbfb")
(bg2 "#e5e7e7")
(bg3 "#d1d3d3")
(bg4 "#bdbfbf")
(builtin "#eb4747")
(keyword "#55b0f6")
(const "#ffa200")
(comment "#b2b6b8")
(func "#40b7bf")
(str "#abce1c")
(type "#ae58e4")
(var "#f04ceb")
(selection "#005fdb")
(warning "#C82829")
(warning2 "#f48925")
(unspec (when (>= emacs-major-version 29) 'unspecified)))
(custom-theme-set-faces
'camm1
`(default ((,class (:background ,bg1 :foreground ,fg1))))
;; syntax
`(font-lock-builtin-face ((,class (:foreground ,builtin))))
`(font-lock-comment-face ((,class (:foreground ,comment))))
`(font-lock-negation-char-face ((,class (:foreground ,const))))
`(font-lock-reference-face ((,class (:foreground ,const))))
`(font-lock-constant-face ((,class (:foreground ,const))))
`(font-lock-doc-face ((,class (:foreground ,comment))))
`(font-lock-function-name-face ((,class (:foreground ,func ))))
`(font-lock-keyword-face ((,class (:bold ,class :foreground ,keyword))))
`(font-lock-string-face ((,class (:foreground ,str))))
`(font-lock-type-face ((,class (:foreground ,type ))))
`(font-lock-variable-name-face ((,class (:foreground ,var))))
`(font-lock-warning-face ((,class (:foreground ,warning :background ,bg2))))
`(term-color-black ((,class (:foreground ,fg2 :background ,unspec))))
;; `(region ((,class (:background ,fg1 :foreground ,bg1))))
`(region ((,class (:background ,selection))))
`(highlight ((,class (:foreground ,fg3 :background ,bg3))))
`(hl-line ((,class (:background ,bg2))))
`(fringe ((,class (:background ,bg2 :foreground ,fg4))))
`(cursor ((,class (:background ,fg4))))
`(isearch ((,class (:bold t :foreground ,warning :background ,bg3))))
;;mode
`(mode-line ((,class (:box (:line-width 1 :color nil) :bold t :foreground ,fg4 :background ,bg2))))
`(mode-line-inactive ((,class (:box (:line-width 1 :color nil :style pressed-button) :foreground ,var :background ,bg1 :weight normal))))
`(mode-line-buffer-id ((,class (:bold t :foreground ,func :background ,unspec))))
`(mode-line-highlight ((,class (:foreground ,keyword :box nil :weight bold))))
`(mode-line-emphasis ((,class (:foreground ,fg1))))
`(vertical-border ((,class (:foreground ,fg3))))
`(minibuffer-prompt ((,class (:bold t :foreground ,keyword))))
`(default-italic ((,class (:italic t))))
`(link ((,class (:foreground ,const :underline t))))
`(font-latex-bold-face ((,class (:foreground ,type))))
`(font-latex-italic-face ((,class (:foreground ,var :italic t))))
`(font-latex-string-face ((,class (:foreground ,str))))
`(font-latex-match-reference-keywords ((,class (:foreground ,const))))
`(font-latex-match-variable-keywords ((,class (:foreground ,var))))
`(ido-only-match ((,class (:foreground ,warning))))
`(org-sexp-date ((,class (:foreground ,fg4))))
`(ido-first-match ((,class (:foreground ,keyword :bold t))))
`(ivy-current-match ((,class (:foreground ,fg3 :inherit highlight :underline t))))
`(gnus-header-content ((,class (:foreground ,keyword))))
`(gnus-header-from ((,class (:foreground ,var))))
`(gnus-header-name ((,class (:foreground ,type))))
`(gnus-header-subject ((,class (:foreground ,func :bold t))))
`(mu4e-view-url-number-face ((,class (:foreground ,type))))
`(mu4e-cited-1-face ((,class (:foreground ,fg2))))
`(mu4e-cited-7-face ((,class (:foreground ,fg3))))
`(mu4e-header-marks-face ((,class (:foreground ,type))))
`(ffap ((,class (:foreground ,fg4))))
`(js2-private-function-call ((,class (:foreground ,const))))
`(js2-jsdoc-html-tag-delimiter ((,class (:foreground ,str))))
`(js2-jsdoc-html-tag-name ((,class (:foreground ,var))))
`(js2-external-variable ((,class (:foreground ,type ))))
`(js2-function-param ((,class (:foreground ,const))))
`(js2-jsdoc-value ((,class (:foreground ,str))))
`(js2-private-member ((,class (:foreground ,fg3))))
`(js3-warning-face ((,class (:underline ,keyword))))
`(js3-error-face ((,class (:underline ,warning))))
`(js3-external-variable-face ((,class (:foreground ,var))))
`(js3-function-param-face ((,class (:foreground ,fg2))))
`(js3-jsdoc-tag-face ((,class (:foreground ,keyword))))
`(js3-instance-member-face ((,class (:foreground ,const))))
`(warning ((,class (:foreground ,warning))))
`(ac-completion-face ((,class (:underline t :foreground ,keyword))))
`(info-quoted-name ((,class (:foreground ,builtin))))
`(info-string ((,class (:foreground ,str))))
`(icompletep-determined ((,class :foreground ,builtin)))
`(undo-tree-visualizer-current-face ((,class :foreground ,builtin)))
`(undo-tree-visualizer-default-face ((,class :foreground ,fg2)))
`(undo-tree-visualizer-unmodified-face ((,class :foreground ,var)))
`(undo-tree-visualizer-register-face ((,class :foreground ,type)))
`(slime-repl-inputed-output-face ((,class (:foreground ,type))))
`(trailing-whitespace ((,class :foreground ,unspec :background ,warning)))
`(rainbow-delimiters-depth-1-face ((,class :foreground ,fg1)))
`(rainbow-delimiters-depth-2-face ((,class :foreground ,type)))
`(rainbow-delimiters-depth-3-face ((,class :foreground ,var)))
`(rainbow-delimiters-depth-4-face ((,class :foreground ,const)))
`(rainbow-delimiters-depth-5-face ((,class :foreground ,keyword)))
`(rainbow-delimiters-depth-6-face ((,class :foreground ,fg1)))
`(rainbow-delimiters-depth-7-face ((,class :foreground ,type)))
`(rainbow-delimiters-depth-8-face ((,class :foreground ,var)))
`(magit-item-highlight ((,class :background ,bg3)))
`(magit-section-heading ((,class (:foreground ,keyword :weight bold))))
`(magit-hunk-heading ((,class (:background ,bg3))))
`(magit-section-highlight ((,class (:background ,bg2))))
`(magit-hunk-heading-highlight ((,class (:background ,bg3))))
`(magit-diff-context-highlight ((,class (:background ,bg3 :foreground ,fg3))))
`(magit-diffstat-added ((,class (:foreground ,type))))
`(magit-diffstat-removed ((,class (:foreground ,var))))
`(magit-process-ok ((,class (:foreground ,func :weight bold))))
`(magit-process-ng ((,class (:foreground ,warning :weight bold))))
`(magit-branch ((,class (:foreground ,const :weight bold))))
`(magit-log-author ((,class (:foreground ,fg3))))
`(magit-hash ((,class (:foreground ,fg2))))
`(magit-diff-file-header ((,class (:foreground ,fg2 :background ,bg3))))
`(lazy-highlight ((,class (:foreground ,fg2 :background ,bg3))))
`(term ((,class (:foreground ,fg1 :background ,bg1))))
`(term-color-black ((,class (:foreground ,bg3 :background ,bg3))))
`(term-color-blue ((,class (:foreground ,func :background ,func))))
`(term-color-red ((,class (:foreground ,keyword :background ,bg3))))
`(term-color-green ((,class (:foreground ,type :background ,bg3))))
`(term-color-yellow ((,class (:foreground ,var :background ,var))))
`(term-color-magenta ((,class (:foreground ,builtin :background ,builtin))))
`(term-color-cyan ((,class (:foreground ,str :background ,str))))
`(term-color-white ((,class (:foreground ,fg2 :background ,fg2))))
`(rainbow-delimiters-unmatched-face ((,class :foreground ,warning))))
;; Legacy
(if (< emacs-major-version 22)
(custom-theme-set-faces
'camm1
`(show-paren-match-face ((,class (:background ,warning))))) ;; obsoleted in 22.1, removed 2016
(custom-theme-set-faces
'camm1
`(show-paren-match ((,class (:foreground ,bg1 :background ,str))))
`(show-paren-mismatch ((,class (:foreground ,bg1 :background ,warning))))))
;; emacs >= 26.1
(when (>= emacs-major-version 26)
(custom-theme-set-faces
'camm1
`(line-number ((t (:inherit fringe))))
`(line-number-current-line ((t (:inherit fringe :foreground ,fg6 :weight bold))))))
;; emacs >= 27.1
(when (>= emacs-major-version 27)
(custom-theme-set-faces
'camm1
`(tab-line ((,class (:background ,bg2 :foreground ,fg4))))
`(tab-line-tab ((,class (:inherit tab-line))))
`(tab-line-tab-inactive ((,class (:background ,bg2 :foreground ,fg4))))
`(tab-line-tab-current ((,class (:background ,bg1 :foreground ,fg1))))
`(tab-line-highlight ((,class (:background ,bg1 :foreground ,fg2))))))
(when (>= emacs-major-version 28)
(custom-theme-set-faces
'camm1
`(line-number ((t (:inherit fringe))))
`(line-number-current-line ((t (:inherit fringe :foreground ,fg6 :weight bold))))))
;; emacs >= 27.1
(when (>= emacs-major-version 27)
(custom-theme-set-faces
'camm1
`(tab-line ((,class (:background ,bg2 :foreground ,fg4))))
`(tab-line-tab ((,class (:inherit tab-line))))
`(tab-line-tab-inactive ((,class (:background ,bg2 :foreground ,fg4))))
`(tab-line-tab-current ((,class (:background ,bg1 :foreground ,fg1))))
`(tab-line-highlight ((,class (:background ,bg1 :foreground ,fg2))))))
(when (>= emacs-major-version 28)
(custom-theme-set-faces
'camm1
`(tab-line-tab-modified ((,class (:foreground ,warning2 :weight bold))))))
(when (boundp 'font-lock-regexp-face)
(custom-theme-set-faces
'camm1
`(font-lock-regexp-face ((,class (:inherit font-lock-string-face :underline t)))))))
;;;###autoload
(when load-file-name
(add-to-list 'custom-theme-load-path
(file-name-as-directory (file-name-directory load-file-name))))
(provide-theme 'camm1)
;; Local Variables:
;; no-byte-compile: t
;; End:
;;; camm1-theme.el ends here
+118
View File
@@ -0,0 +1,118 @@
;;; camm2-theme.el --- A custom light theme based on provided colors -*- lexical-binding: t; -*-
(deftheme camm2
"Custom light theme created from user-supplied colors.")
;; Helper to reference colors by name (makes the theme cleaner)
(defun my-color (name)
(cl-case name
(fg1 "#111")
(fg2 "#242424")
(fg3 "#373737")
(fg4 "#4a4a4a")
(fg6 "#0d0d0d")
(bg1 "#f9fbfb")
(bg2 "#e5e7e7")
(bg3 "#d1d3d3")
(bg4 "#bdbfbf")
(builtin "#40b7bf")
(keyword "#55b0f6")
(const "#ffa200")
(comment "#b2b6b8")
(func "#eb4747")
(str "#a8dc19")
(type "#ae58e4")
(var "#f04ceb")
(selection "#005fdb")
(warning "#C82829")
(warning2 "#f48925")))
(custom-theme-set-faces
'camm2
;; Basic faces
`(default ((t (:background ,(my-color 'bg1) :foreground ,(my-color 'fg1)))))
`(cursor ((t (:background ,(my-color 'fg4)))))
`(fringe ((t (:background ,(my-color 'bg2) :foreground ,(my-color 'fg3)))))
`(vertical-border ((t (:foreground ,(my-color 'bg3)))))
`(linum ((t (:background ,(my-color 'bg1) :foreground ,(my-color 'fg3))))) ; legacy
`(line-number ((t (:background ,(my-color 'bg1) :foreground ,(my-color 'fg3)))))
`(line-number-current-line ((t (:background ,(my-color 'bg1) :foreground ,(my-color 'fg1) :weight bold))))
;; Font lock faces (syntax highlighting)
`(font-lock-builtin-face ((t (:foreground ,(my-color 'builtin)))))
`(font-lock-keyword-face ((t (:foreground ,(my-color 'keyword)))))
`(font-lock-constant-face ((t (:foreground ,(my-color 'const)))))
`(font-lock-comment-face ((t (:foreground ,(my-color 'comment) :slant italic))))
`(font-lock-comment-delimiter-face ((t (:foreground ,(my-color 'comment) :slant italic))))
`(font-lock-function-name-face ((t (:foreground ,(my-color 'func)))))
`(font-lock-string-face ((t (:foreground ,(my-color 'str)))))
`(font-lock-type-face ((t (:foreground ,(my-color 'type)))))
`(font-lock-variable-name-face ((t (:foreground ,(my-color 'var)))))
`(font-lock-doc-face ((t (:foreground ,(my-color 'comment) :slant italic))))
`(font-lock-preprocessor-face ((t (:foreground ,(my-color 'builtin)))))
`(font-lock-warning-face ((t (:foreground ,(my-color 'warning) :weight bold))))
;; Region and selection
`(region ((t (:background ,(my-color 'selection) :foreground ,(my-color 'bg1)))))
`(secondary-selection ((t (:background ,(my-color 'bg3)))))
;; Mode line
`(mode-line ((t (:background ,(my-color 'bg2) :foreground ,(my-color 'fg1) :box (:line-width 1 :color ,(my-color 'bg4))))))
`(mode-line-inactive ((t (:background ,(my-color 'bg1) :foreground ,(my-color 'fg3) :box (:line-width 1 :color ,(my-color 'bg3))))))
;; Minibuffer and prompts
`(minibuffer-prompt ((t (:foreground ,(my-color 'keyword) :weight bold))))
;; Highlighting
`(highlight ((t (:background ,(my-color 'bg3)))))
`(hl-line ((t (:background ,(my-color 'bg2)))))
`(isearch ((t (:background ,(my-color 'warning2) :foreground ,(my-color 'bg1)))))
`(lazy-highlight ((t (:background ,(my-color 'bg4)))))
;; Matching parentheses
`(show-paren-match ((t (:background ,(my-color 'bg3) :foreground ,(my-color 'fg1) :weight bold))))
`(show-paren-mismatch ((t (:background ,(my-color 'warning) :foreground ,(my-color 'bg1)))))
;; Error / warning / success
`(error ((t (:foreground ,(my-color 'warning) :weight bold))))
`(warning ((t (:foreground ,(my-color 'warning2) :weight bold))))
`(success ((t (:foreground ,(my-color 'str)))))
;; Button and link
`(link ((t (:foreground ,(my-color 'keyword) :underline t))))
`(link-visited ((t (:foreground ,(my-color 'type) :underline t))))
;; Tooltip
`(tooltip ((t (:background ,(my-color 'bg2) :foreground ,(my-color 'fg1) :box (:line-width 1 :color ,(my-color 'bg4))))))
;; Dired
`(dired-directory ((t (:foreground ,(my-color 'keyword) :weight bold))))
`(dired-symlink ((t (:foreground ,(my-color 'func)))))
`(dired-ignored ((t (:foreground ,(my-color 'comment)))))
;; Custom faces used by Doom modules (modeline, dashboard, etc.)
`(doom-modeline-bar ((t (:background ,(my-color 'keyword)))))
`(doom-modeline-buffer-file ((t (:foreground ,(my-color 'func)))))
`(doom-modeline-buffer-modified ((t (:foreground ,(my-color 'warning2)))))
`(doom-modeline-project-dir ((t (:foreground ,(my-color 'type)))))
;; Company / autocomplete
`(company-tooltip ((t (:background ,(my-color 'bg2) :foreground ,(my-color 'fg1)))))
`(company-tooltip-selection ((t (:background ,(my-color 'selection) :foreground ,(my-color 'bg1)))))
`(company-tooltip-common ((t (:foreground ,(my-color 'func)))))
`(company-scrollbar-fg ((t (:background ,(my-color 'fg4)))))
`(company-scrollbar-bg ((t (:background ,(my-color 'bg3)))))
;; Outline / Org headings (simple, can be extended)
`(outline-1 ((t (:foreground ,(my-color 'type) :weight bold))))
`(outline-2 ((t (:foreground ,(my-color 'func) :weight bold))))
`(outline-3 ((t (:foreground ,(my-color 'keyword) :weight bold))))
`(org-level-1 ((t (:inherit outline-1 :height 1.1))))
`(org-level-2 ((t (:inherit outline-2 :height 1.05))))
`(org-level-3 ((t (:inherit outline-3))))
)
;; Provide the theme
(provide-theme 'camm2)
;;; camm2-theme.el ends here
+223
View File
@@ -0,0 +1,223 @@
;;; camm3-theme.el --- Custom theme based on user palette -*- lexical-binding: t; -*-
(deftheme camm3 "Custom theme with neutrals, syntax highlighting, and UI feedback.")
(let ((class '((class color) (min-colors 89)))
;; Neutrals & surfaces
(bg-base "#f9fbfb")
(bg-panel "#f2f4f4")
(bg-surface-2 "#e5e7e7")
(bg-surface-3 "#d1d3d3")
(border "#bdbfbf")
(border-focus "#005fdb")
;; Text scale
(text-primary "#0d0d0d")
(text-secondary "#111111")
(text-tertiary "#242424")
(text-muted "#373737")
(text-faint "#4a4a4a")
(text-faint-2 "#5d5d5d")
(text-inverse "#ffffff")
;; Syntax highlighting
(code-comment "#b2b6b8")
(code-builtin "#40b7bf")
(code-keyword "#55b0f6")
(code-constant "#ffa200")
(code-function "#c42020")
(code-string "#a8dc19")
(code-type "#8a35b8")
(code-variable "#f04ceb")
(code-number "#f48925")
(code-operator "#4a4a4a")
;; UI & feedback
(ui-selection "#005fdb")
(ui-selection-bg "#e6eeff")
(ui-cursor "#005fdb")
(ui-active-line "#f0f4ff")
(status-error "#c82829")
(status-warning "#f48925")
(status-success "#22a653")
(status-info "#3b82f6"))
(custom-theme-set-faces
'camm3
;; Basic faces
`(default ((,class (:background ,bg-base :foreground ,text-primary))))
`(cursor ((,class (:background ,ui-cursor))))
`(region ((,class (:background ,ui-selection-bg :foreground ,ui-selection))))
`(fringe ((,class (:background ,bg-panel :foreground ,text-faint))))
`(highlight ((,class (:background ,ui-active-line))))
`(hl-line ((,class (:background ,ui-active-line))))
`(vertical-border ((,class (:foreground ,border))))
`(window-divider ((,class (:foreground ,border))))
`(window-divider-first-pixel ((,class (:foreground ,border))))
`(window-divider-last-pixel ((,class (:foreground ,border))))
`(minibuffer-prompt ((,class (:foreground ,status-info :weight bold))))
`(link ((,class (:foreground ,status-info :underline t))))
`(link-visited ((,class (:foreground ,code-type :underline t))))
`(shadow ((,class (:foreground ,text-faint))))
`(success ((,class (:foreground ,status-success :weight bold))))
`(warning ((,class (:foreground ,status-warning :weight bold))))
`(error ((,class (:foreground ,status-error :weight bold))))
;; Mode line
`(mode-line ((,class (:background ,bg-surface-2 :foreground ,text-primary
:box (:line-width 1 :color ,border)))))
`(mode-line-inactive ((,class (:background ,bg-panel :foreground ,text-faint
:box (:line-width 1 :color ,border)))))
`(mode-line-buffer-id ((,class (:weight bold :foreground ,ui-selection))))
;; Line numbers
`(line-number ((,class (:background ,bg-base :foreground ,text-faint-2))))
`(line-number-current-line ((,class (:background ,ui-active-line :foreground ,text-primary :weight bold))))
;; Font lock (syntax highlighting)
`(font-lock-builtin-face ((,class (:foreground ,code-builtin))))
`(font-lock-comment-face ((,class (:foreground ,code-comment :slant italic))))
`(font-lock-comment-delimiter-face ((,class (:foreground ,code-comment :slant italic))))
`(font-lock-constant-face ((,class (:foreground ,code-constant))))
`(font-lock-doc-face ((,class (:foreground ,code-comment :slant italic))))
`(font-lock-function-name-face ((,class (:foreground ,code-function))))
`(font-lock-keyword-face ((,class (:foreground ,code-keyword))))
`(font-lock-number-face ((,class (:foreground ,code-number))))
`(font-lock-operator-face ((,class (:foreground ,code-operator))))
`(font-lock-string-face ((,class (:foreground ,code-string))))
`(font-lock-type-face ((,class (:foreground ,code-type))))
`(font-lock-variable-name-face ((,class (:foreground ,code-variable))))
`(font-lock-warning-face ((,class (:foreground ,status-warning :weight bold))))
;; Search & match
`(isearch ((,class (:background ,ui-selection :foreground ,text-inverse))))
`(isearch-fail ((,class (:background ,status-error :foreground ,text-inverse))))
`(lazy-highlight ((,class (:background ,ui-selection-bg :foreground ,ui-selection :underline t))))
`(match ((,class (:background ,ui-selection-bg :foreground ,ui-selection))))
;; Secondary selection (e.g., multiple-cursors)
`(secondary-selection ((,class (:background ,bg-surface-3))))
;; Trailing whitespace
`(trailing-whitespace ((,class (:background ,status-error :foreground ,text-inverse))))
;; Diff (vc-gutter, magit)
`(diff-added ((,class (:foreground ,status-success))))
`(diff-removed ((,class (:foreground ,status-error))))
`(diff-refine-added ((,class (:background ,status-success :foreground ,text-inverse))))
`(diff-refine-removed ((,class (:background ,status-error :foreground ,text-inverse))))
`(diff-header ((,class (:background ,bg-panel :foreground ,text-tertiary))))
`(diff-file-header ((,class (:background ,bg-surface-2 :foreground ,text-primary :weight bold))))
;; Org mode
`(org-level-1 ((,class (:foreground ,ui-selection :weight bold :height 1.2))))
`(org-level-2 ((,class (:foreground ,code-function :weight bold :height 1.1))))
`(org-level-3 ((,class (:foreground ,code-type :weight bold))))
`(org-level-4 ((,class (:foreground ,code-variable :weight bold))))
`(org-level-5 ((,class (:foreground ,code-builtin :weight bold))))
`(org-level-6 ((,class (:foreground ,code-constant :weight bold))))
`(org-level-7 ((,class (:foreground ,code-keyword :weight bold))))
`(org-level-8 ((,class (:foreground ,code-string :weight bold))))
`(org-todo ((,class (:foreground ,status-error :weight bold))))
`(org-done ((,class (:foreground ,status-success :weight bold))))
`(org-date ((,class (:foreground ,code-number :underline t))))
`(org-link ((,class (:foreground ,status-info :underline t))))
`(org-block ((,class (:background ,bg-surface-2 :extend t))))
`(org-block-begin-line ((,class (:background ,bg-panel :foreground ,text-faint))))
`(org-block-end-line ((,class (:background ,bg-panel :foreground ,text-faint))))
;; Doom modeline specific (if using doom-modeline)
`(doom-modeline-bar ((,class (:background ,ui-selection))))
`(doom-modeline-buffer-modified ((,class (:foreground ,status-warning))))
`(doom-modeline-buffer-major-mode ((,class (:foreground ,code-type :weight bold))))
`(doom-modeline-project-root-dir ((,class (:foreground ,code-builtin))))
`(doom-modeline-evil-normal-state ((,class (:background ,ui-selection :foreground ,text-inverse))))
`(doom-modeline-evil-insert-state ((,class (:background ,status-success :foreground ,text-inverse))))
`(doom-modeline-evil-visual-state ((,class (:background ,code-variable :foreground ,text-inverse))))
;; Tree-sitter (if you use tree-sitter modes)
`(tree-sitter-hl-face:function.call ((,class (:foreground ,code-function))))
`(tree-sitter-hl-face:function.builtin ((,class (:foreground ,code-builtin))))
`(tree-sitter-hl-face:function ((,class (:foreground ,code-function))))
`(tree-sitter-hl-face:type ((,class (:foreground ,code-type))))
`(tree-sitter-hl-face:constant ((,class (:foreground ,code-constant))))
`(tree-sitter-hl-face:keyword ((,class (:foreground ,code-keyword))))
`(tree-sitter-hl-face:string ((,class (:foreground ,code-string))))
`(tree-sitter-hl-face:comment ((,class (:foreground ,code-comment :slant italic))))
`(tree-sitter-hl-face:variable ((,class (:foreground ,code-variable))))
`(tree-sitter-hl-face:number ((,class (:foreground ,code-number))))
`(tree-sitter-hl-face:operator ((,class (:foreground ,code-operator))))
`(tree-sitter-hl-face:property ((,class (:foreground ,text-secondary))))
;; Company / Corfu completion
`(company-tooltip ((,class (:background ,bg-panel :foreground ,text-primary))))
`(company-tooltip-selection ((,class (:background ,ui-selection-bg :foreground ,ui-selection))))
`(company-tooltip-common ((,class (:foreground ,code-keyword))))
`(company-tooltip-annotation ((,class (:foreground ,text-faint))))
`(company-scrollbar-bg ((,class (:background ,bg-surface-3))))
`(company-scrollbar-fg ((,class (:background ,border))))
`(corfu-current ((,class (:background ,ui-selection-bg :foreground ,ui-selection))))
;; LSP / Flycheck
`(flycheck-error ((,class (:underline (:style wave :color ,status-error)))))
`(flycheck-warning ((,class (:underline (:style wave :color ,status-warning)))))
`(flycheck-info ((,class (:underline (:style wave :color ,status-info)))))
`(lsp-face-highlight-textual ((,class (:background ,ui-active-line :underline t))))
`(lsp-face-highlight-read ((,class (:background ,ui-selection-bg :underline t))))
`(lsp-face-highlight-write ((,class (:background ,ui-selection-bg :underline t))))
;; Whitespace mode
`(whitespace-space ((,class (:foreground ,bg-surface-3))))
`(whitespace-tab ((,class (:foreground ,bg-surface-3))))
`(whitespace-newline ((,class (:foreground ,bg-surface-3))))
`(whitespace-indentation ((,class (:foreground ,bg-surface-3))))
`(whitespace-line ((,class (:background ,ui-active-line :foreground ,text-primary))))
`(whitespace-empty ((,class (:background ,status-error :foreground ,text-inverse))))
;; Highlight indentation guides (indent-guides)
`(highlight-indent-guides-character-face ((,class (:foreground ,border))))
`(highlight-indent-guides-stack-character-face ((,class (:foreground ,bg-surface-3))))
`(highlight-indent-guides-odd-face ((,class (:background ,bg-panel))))
`(highlight-indent-guides-even-face ((,class (:background ,bg-base))))
;; IMenu / Outline
`(imenu-list-entry-face-0 ((,class (:foreground ,code-keyword))))
`(imenu-list-entry-face-1 ((,class (:foreground ,code-function))))
`(imenu-list-entry-face-2 ((,class (:foreground ,code-type))))
`(imenu-list-entry-face-3 ((,class (:foreground ,code-constant))))
;; Avy (jump hints)
`(avy-lead-face ((,class (:background ,ui-selection :foreground ,text-inverse :weight bold))))
`(avy-lead-face-0 ((,class (:background ,status-success :foreground ,text-inverse :weight bold))))
`(avy-lead-face-1 ((,class (:background ,status-warning :foreground ,text-inverse :weight bold))))
`(avy-lead-face-2 ((,class (:background ,code-variable :foreground ,text-inverse :weight bold))))
`(avy-background-face ((,class (:background ,bg-panel :foreground ,text-faint))))
;; Denote (notes)
`(denote-faces-link ((,class (:foreground ,status-info :underline t))))
`(denote-faces-date ((,class (:foreground ,code-number))))
`(denote-faces-keyword ((,class (:foreground ,code-keyword :weight bold))))
`(denote-faces-title ((,class (:foreground ,text-primary :weight bold :height 1.2))))
;; Extra: markdown, json, etc.
`(markdown-header-face-1 ((,class (:inherit org-level-1))))
`(markdown-header-face-2 ((,class (:inherit org-level-2))))
`(markdown-header-face-3 ((,class (:inherit org-level-3))))
`(markdown-header-face-4 ((,class (:inherit org-level-4))))
`(markdown-header-face-5 ((,class (:inherit org-level-5))))
`(markdown-header-face-6 ((,class (:inherit org-level-6))))
`(markdown-link-face ((,class (:inherit link))))
`(markdown-url-face ((,class (:foreground ,code-number))))
`(json-key-face ((,class (:foreground ,code-keyword))))
`(json-number-face ((,class (:foreground ,code-number))))
`(json-string-face ((,class (:foreground ,code-string))))
`(json-boolean-face ((,class (:foreground ,code-constant))))
`(json-null-face ((,class (:foreground ,code-constant))))
;; Custom faces used in user config (e.g., my-set-buffer-font buffer-face)
`(buffer-face ((,class (:family "Noto Sans" :height 140))))))
;; Provide the theme
(provide-theme 'camm3)
;;; camm3-theme.el ends here
+152
View File
@@ -0,0 +1,152 @@
;;; camm4-theme.el --- A light theme based on the camm4 palette -*- lexical-binding: t; no-byte-compile: t; -*-
(deftheme camm4
"Light theme with a calm, readable palette.
Core colours: blues (005FDB, 3B82F6, 007A8A, 40B7BF) and magenta (8A35B8, D33682).")
(let ((class '((class color) (min-colors 89)))
;; Basic palette
(camm4-bg "#fefcff")
(camm4-fg "#101010")
(camm4-cursor "#f04ceb")
;; ANSI colours (index 01-16)
(camm4-black "#E6EEFF") ; 01 very light blueish grey
(camm4-red "#C82829") ; 02
(camm4-green "#419722") ; 03
(camm4-yellow "#F48925") ; 04
(camm4-blue "#005FDB") ; 05 core blue
(camm4-magenta "#EF89DF") ; 06 core purple
(camm4-cyan "#007A8A") ; 07 core teal/blue
(camm4-white "#4D4D4C") ; 08 dark grey
(camm4-brblack "#e2ecff") ; 09
(camm4-brred "#E53935") ; 10
(camm4-brgreen "#22A653") ; 11
(camm4-bryellow "#FFA200") ; 12
(camm4-brblue "#3B82F6") ; 13 core bright blue
(camm4-brmagenta "#D33682") ; 14 core bright magenta
(camm4-brcyan "#40B7BF") ; 15 core bright teal
(camm4-brwhite "#1D1F21")) ; 16 near black
(custom-theme-set-faces
'camm4
;; Basic faces
`(default ((,class (:background ,camm4-bg :foreground ,camm4-fg))))
`(cursor ((,class (:background ,camm4-cursor))))
`(fringe ((,class (:background ,camm4-bg :foreground ,camm4-white))))
`(region ((,class (:background ,camm4-brblack :foreground ,camm4-fg))))
`(highlight ((,class (:background ,camm4-brblack))))
`(hl-line ((,class (:background ,camm4-brblack))))
`(success ((,class (:foreground ,camm4-brgreen))))
`(warning ((,class (:foreground ,camm4-bryellow))))
`(error ((,class (:foreground ,camm4-brred :weight bold))))
`(link ((,class (:foreground ,camm4-blue :underline t))))
`(link-visited ((,class (:foreground ,camm4-magenta :underline t))))
;; Font lock (syntax highlighting)
`(font-lock-builtin-face ((,class (:foreground ,camm4-cyan))))
`(font-lock-comment-face ((,class (:foreground ,camm4-white :slant italic))))
`(font-lock-comment-delimiter-face ((,class (:inherit font-lock-comment-face))))
`(font-lock-constant-face ((,class (:foreground ,camm4-brblue))))
`(font-lock-doc-face ((,class (:inherit font-lock-comment-face :foreground ,camm4-green))))
`(font-lock-function-name-face ((,class (:foreground ,camm4-brmagenta :weight bold))))
`(font-lock-keyword-face ((,class (:foreground ,camm4-blue :weight bold))))
`(font-lock-negation-char-face ((,class (:foreground ,camm4-red))))
`(font-lock-preprocessor-face ((,class (:foreground ,camm4-cyan))))
`(font-lock-regexp-grouping-backslash ((,class (:foreground ,camm4-yellow))))
`(font-lock-regexp-grouping-construct ((,class (:foreground ,camm4-red))))
`(font-lock-string-face ((,class (:foreground ,camm4-red :weight semi-light))))
`(font-lock-type-face ((,class (:foreground ,camm4-brcyan :weight normal))))
`(font-lock-variable-name-face ((,class (:foreground ,camm4-magenta))))
`(font-lock-warning-face ((,class (:foreground ,camm4-brred :weight bold))))
;; Mode line
`(mode-line ((,class (:background ,camm4-black :foreground ,camm4-fg :box (:line-width 1 :color ,camm4-white)))))
`(mode-line-inactive ((,class (:background ,camm4-brblack :foreground ,camm4-white :box (:line-width 1 :color ,camm4-brblack)))))
`(mode-line-buffer-id ((,class (:weight bold :foreground ,camm4-brblue))))
`(mode-line-emphasis ((,class (:weight bold))))
`(mode-line-highlight ((,class (:box (:line-width 1 :color ,camm4-brblue)))))
;; Minibuffer, completion, etc.
`(minibuffer-prompt ((,class (:foreground ,camm4-blue :weight bold))))
`(completions-common-part ((,class (:foreground ,camm4-fg))))
`(completions-first-difference ((,class (:foreground ,camm4-brred :weight bold))))
;; Search
`(isearch ((,class (:background ,camm4-bryellow :foreground ,camm4-fg))))
`(isearch-fail ((,class (:background ,camm4-red :foreground ,camm4-bg))))
`(lazy-highlight ((,class (:background ,camm4-yellow :foreground ,camm4-fg :underline t))))
;; Line numbers
`(line-number ((,class (:foreground ,camm4-white :background ,camm4-bg))))
`(line-number-current-line ((,class (:foreground ,camm4-blue :weight bold :background ,camm4-brblack))))
;; Dired
`(dired-header ((,class (:foreground ,camm4-blue :weight bold))))
`(dired-directory ((,class (:foreground ,camm4-brblue :weight bold))))
`(dired-symlink ((,class (:foreground ,camm4-cyan :slant italic))))
;; Org mode
`(org-level-1 ((,class (:foreground ,camm4-brblue :weight bold :height 1.2))))
`(org-level-2 ((,class (:foreground ,camm4-blue :weight bold :height 1.1))))
`(org-level-3 ((,class (:foreground ,camm4-cyan :weight bold))))
`(org-level-4 ((,class (:foreground ,camm4-magenta :weight bold))))
`(org-level-5 ((,class (:foreground ,camm4-brcyan :weight bold))))
`(org-level-6 ((,class (:foreground ,camm4-brmagenta :weight bold))))
`(org-todo ((,class (:foreground ,camm4-brred :weight bold :box t))))
`(org-done ((,class (:foreground ,camm4-brgreen :weight bold :box t))))
`(org-date ((,class (:foreground ,camm4-brblue :underline t))))
`(org-link ((,class (:foreground ,camm4-blue :underline t))))
`(org-tag ((,class (:foreground ,camm4-white :weight normal))))
;; Markdown
`(markdown-header-face-1 ((,class (:inherit org-level-1))))
`(markdown-header-face-2 ((,class (:inherit org-level-2))))
`(markdown-header-face-3 ((,class (:inherit org-level-3))))
`(markdown-link-face ((,class (:inherit link))))
`(markdown-url-face ((,class (:inherit link))))
;; Magit
`(magit-branch-local ((,class (:foreground ,camm4-brblue :weight bold))))
`(magit-branch-remote ((,class (:foreground ,camm4-cyan :weight bold))))
`(magit-tag ((,class (:foreground ,camm4-bryellow :weight bold))))
`(magit-hash ((,class (:foreground ,camm4-white))))
`(magit-diff-added ((,class (:foreground ,camm4-brgreen))))
`(magit-diff-removed ((,class (:foreground ,camm4-brred))))
`(magit-diff-context ((,class (:foreground ,camm4-white))))
`(magit-section-heading ((,class (:foreground ,camm4-blue :weight bold :background ,camm4-brblack))))
`(magit-section-highlight ((,class (:background ,camm4-brblack))))
;; Treesitter (if you use it)
`(tree-sitter-hl-face:function.call ((,class (:foreground ,camm4-brmagenta))))
`(tree-sitter-hl-face:function.builtin ((,class (:foreground ,camm4-cyan))))
`(tree-sitter-hl-face:variable.builtin ((,class (:foreground ,camm4-magenta))))
`(tree-sitter-hl-face:type ((,class (:foreground ,camm4-brcyan))))
`(tree-sitter-hl-face:constant.builtin ((,class (:foreground ,camm4-brblue))))
;; LSP / Flycheck
`(flycheck-error ((,class (:underline (:style wave :color ,camm4-brred)))))
`(flycheck-warning ((,class (:underline (:style wave :color ,camm4-bryellow)))))
`(flycheck-info ((,class (:underline (:style wave :color ,camm4-brblue)))))
`(lsp-face-highlight-textual ((,class (:background ,camm4-brblack :underline t))))
;; Extra
`(show-paren-match ((,class (:background ,camm4-brcyan :foreground ,camm4-bg :weight bold))))
`(show-paren-mismatch ((,class (:background ,camm4-brred :foreground ,camm4-bg :weight bold))))
`(match ((,class (:background ,camm4-yellow :foreground ,camm4-fg))))
`(shadow ((,class (:foreground ,camm4-white))))
`(secondary-selection ((,class (:background ,camm4-brblack))))
`(trailing-whitespace ((,class (:background ,camm4-brred))))
`(vertical-border ((,class (:foreground ,camm4-white))))
`(widget-button ((,class (:foreground ,camm4-blue :weight bold))))
`(widget-field ((,class (:background ,camm4-brblack))))
))
;;;###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 'camm4)
;;; camm4-theme.el ends here
+152
View File
@@ -0,0 +1,152 @@
;;; camm4-theme.el --- A light theme based on the camm4 palette -*- lexical-binding: t; no-byte-compile: t; -*-
(deftheme camm4
"Light theme with a calm, readable palette.
Core colours: blues (005FDB, 3B82F6, 007A8A, 40B7BF) and magenta (8A35B8, D33682).")
(let ((class '((class color) (min-colors 89)))
;; Basic palette
(camm4-bg "#fefcff")
(camm4-fg "#101010")
(camm4-cursor "#f04ceb")
;; ANSI colours (index 01-16)
(camm4-black "#E6EEFF") ; 01 very light blueish grey
(camm4-red "#C82829") ; 02
(camm4-green "#419722") ; 03
(camm4-yellow "#F48925") ; 04
(camm4-blue "#005FDB") ; 05 core blue
(camm4-magenta "#EF89DF") ; 06 core purple
(camm4-cyan "#007A8A") ; 07 core teal/blue
(camm4-white "#4D4D4C") ; 08 dark grey
(camm4-brblack "#e2ecff") ; 09
(camm4-brred "#E53935") ; 10
(camm4-brgreen "#22A653") ; 11
(camm4-bryellow "#FFA200") ; 12
(camm4-brblue "#3B82F6") ; 13 core bright blue
(camm4-brmagenta "#D33682") ; 14 core bright magenta
(camm4-brcyan "#40B7BF") ; 15 core bright teal
(camm4-brwhite "#1D1F21")) ; 16 near black
(custom-theme-set-faces
'camm4
;; Basic faces
`(default ((,class (:background ,camm4-bg :foreground ,camm4-fg))))
`(cursor ((,class (:background ,camm4-cursor))))
`(fringe ((,class (:background ,camm4-bg :foreground ,camm4-white))))
`(region ((,class (:background ,camm4-brblack :foreground ,camm4-fg))))
`(highlight ((,class (:background ,camm4-brblack))))
`(hl-line ((,class (:background ,camm4-brblack))))
`(success ((,class (:foreground ,camm4-brgreen))))
`(warning ((,class (:foreground ,camm4-bryellow))))
`(error ((,class (:foreground ,camm4-brred :weight bold))))
`(link ((,class (:foreground ,camm4-blue :underline t))))
`(link-visited ((,class (:foreground ,camm4-magenta :underline t))))
;; Font lock (syntax highlighting)
`(font-lock-builtin-face ((,class (:foreground ,camm4-cyan))))
`(font-lock-comment-face ((,class (:foreground ,camm4-white :slant italic))))
`(font-lock-comment-delimiter-face ((,class (:inherit font-lock-comment-face))))
`(font-lock-constant-face ((,class (:foreground ,camm4-brblue))))
`(font-lock-doc-face ((,class (:inherit font-lock-comment-face :foreground ,camm4-green))))
`(font-lock-function-name-face ((,class (:foreground ,camm4-brmagenta :weight bold))))
`(font-lock-keyword-face ((,class (:foreground ,camm4-blue :weight bold))))
`(font-lock-negation-char-face ((,class (:foreground ,camm4-red))))
`(font-lock-preprocessor-face ((,class (:foreground ,camm4-cyan))))
`(font-lock-regexp-grouping-backslash ((,class (:foreground ,camm4-yellow))))
`(font-lock-regexp-grouping-construct ((,class (:foreground ,camm4-red))))
`(font-lock-string-face ((,class (:foreground ,camm4-red :weight semi-light))))
`(font-lock-type-face ((,class (:foreground ,camm4-brcyan :weight normal))))
`(font-lock-variable-name-face ((,class (:foreground ,camm4-magenta))))
`(font-lock-warning-face ((,class (:foreground ,camm4-brred :weight bold))))
;; Mode line
`(mode-line ((,class (:background ,camm4-black :foreground ,camm4-fg :box (:line-width 1 :color ,camm4-white)))))
`(mode-line-inactive ((,class (:background ,camm4-brblack :foreground ,camm4-white :box (:line-width 1 :color ,camm4-brblack)))))
`(mode-line-buffer-id ((,class (:weight bold :foreground ,camm4-brblue))))
`(mode-line-emphasis ((,class (:weight bold))))
`(mode-line-highlight ((,class (:box (:line-width 1 :color ,camm4-brblue)))))
;; Minibuffer, completion, etc.
`(minibuffer-prompt ((,class (:foreground ,camm4-blue :weight bold))))
`(completions-common-part ((,class (:foreground ,camm4-fg))))
`(completions-first-difference ((,class (:foreground ,camm4-brred :weight bold))))
;; Search
`(isearch ((,class (:background ,camm4-bryellow :foreground ,camm4-fg))))
`(isearch-fail ((,class (:background ,camm4-red :foreground ,camm4-bg))))
`(lazy-highlight ((,class (:background ,camm4-yellow :foreground ,camm4-fg :underline t))))
;; Line numbers
`(line-number ((,class (:foreground ,camm4-white :background ,camm4-bg))))
`(line-number-current-line ((,class (:foreground ,camm4-blue :weight bold :background ,camm4-brblack))))
;; Dired
`(dired-header ((,class (:foreground ,camm4-blue :weight bold))))
`(dired-directory ((,class (:foreground ,camm4-brblue :weight bold))))
`(dired-symlink ((,class (:foreground ,camm4-cyan :slant italic))))
;; Org mode
`(org-level-1 ((,class (:foreground ,camm4-brblue :weight bold :height 1.2))))
`(org-level-2 ((,class (:foreground ,camm4-blue :weight bold :height 1.1))))
`(org-level-3 ((,class (:foreground ,camm4-cyan :weight bold))))
`(org-level-4 ((,class (:foreground ,camm4-magenta :weight bold))))
`(org-level-5 ((,class (:foreground ,camm4-brcyan :weight bold))))
`(org-level-6 ((,class (:foreground ,camm4-brmagenta :weight bold))))
`(org-todo ((,class (:foreground ,camm4-brred :weight bold :box t))))
`(org-done ((,class (:foreground ,camm4-brgreen :weight bold :box t))))
`(org-date ((,class (:foreground ,camm4-brblue :underline t))))
`(org-link ((,class (:foreground ,camm4-blue :underline t))))
`(org-tag ((,class (:foreground ,camm4-white :weight normal))))
;; Markdown
`(markdown-header-face-1 ((,class (:inherit org-level-1))))
`(markdown-header-face-2 ((,class (:inherit org-level-2))))
`(markdown-header-face-3 ((,class (:inherit org-level-3))))
`(markdown-link-face ((,class (:inherit link))))
`(markdown-url-face ((,class (:inherit link))))
;; Magit
`(magit-branch-local ((,class (:foreground ,camm4-brblue :weight bold))))
`(magit-branch-remote ((,class (:foreground ,camm4-cyan :weight bold))))
`(magit-tag ((,class (:foreground ,camm4-bryellow :weight bold))))
`(magit-hash ((,class (:foreground ,camm4-white))))
`(magit-diff-added ((,class (:foreground ,camm4-brgreen))))
`(magit-diff-removed ((,class (:foreground ,camm4-brred))))
`(magit-diff-context ((,class (:foreground ,camm4-white))))
`(magit-section-heading ((,class (:foreground ,camm4-blue :weight bold :background ,camm4-brblack))))
`(magit-section-highlight ((,class (:background ,camm4-brblack))))
;; Treesitter (if you use it)
`(tree-sitter-hl-face:function.call ((,class (:foreground ,camm4-brmagenta))))
`(tree-sitter-hl-face:function.builtin ((,class (:foreground ,camm4-cyan))))
`(tree-sitter-hl-face:variable.builtin ((,class (:foreground ,camm4-magenta))))
`(tree-sitter-hl-face:type ((,class (:foreground ,camm4-brcyan))))
`(tree-sitter-hl-face:constant.builtin ((,class (:foreground ,camm4-brblue))))
;; LSP / Flycheck
`(flycheck-error ((,class (:underline (:style wave :color ,camm4-brred)))))
`(flycheck-warning ((,class (:underline (:style wave :color ,camm4-bryellow)))))
`(flycheck-info ((,class (:underline (:style wave :color ,camm4-brblue)))))
`(lsp-face-highlight-textual ((,class (:background ,camm4-brblack :underline t))))
;; Extra
`(show-paren-match ((,class (:background ,camm4-brcyan :foreground ,camm4-bg :weight bold))))
`(show-paren-mismatch ((,class (:background ,camm4-brred :foreground ,camm4-bg :weight bold))))
`(match ((,class (:background ,camm4-yellow :foreground ,camm4-fg))))
`(shadow ((,class (:foreground ,camm4-white))))
`(secondary-selection ((,class (:background ,camm4-brblack))))
`(trailing-whitespace ((,class (:background ,camm4-brred))))
`(vertical-border ((,class (:foreground ,camm4-white))))
`(widget-button ((,class (:foreground ,camm4-blue :weight bold))))
`(widget-field ((,class (:background ,camm4-brblack))))
))
;;;###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 'camm4)
;;; camm4-theme.el ends here
+167
View File
@@ -0,0 +1,167 @@
;;; cutar-theme.el --- A high-contrast dark theme with blue/pink accents -*- lexical-binding: t; no-byte-compile: t; -*-
(deftheme cutar
"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 "#fefcff") ;; Default background
(fg "#101010") ;; Default foreground
(cursor "#fefcff") ;; Cursor bg (matches `bg`; visibility depends on `cursor-type`)
(selection "#6ECFD5") ;; Region/selected text background
(selection-fg "#101010") ;; Region/selected text foreground
;; --- ANSI NORMAL ---
(dark_blue "#0094E7") ;; Fringe, minibuffer prompts, function names, line numbers, inactive tab borders
(red "#C82829") ;; Errors, negation chars, failed search (`isearch-fail`)
(medium_blue "#005FDB") ;; Keywords, active hyperlinks
(orange "#DD7050") ;; Constants, lazy search highlights, debug indicators
(magenta "#D536AD") ;; Strings, variables, UI dividers (`vertical-border`)
(green "#419722") ;; Docstrings, comment delimiters, info/status indicators
(cyan "#409FAF") ;; Types/Classes
(purple "#8a35b8") ;; Built-ins, visited links
;; --- ANSI BRIGHT ---
(light_blue "#82D3FF") ;; Inactive mode-line/tabs background (shares hex with `selection`)
(light_red "#FC7070") ;; Warnings, builtin, regex constructs
(accent_blue "#71A1F3") ;; (Currently unused in faces)
(yellow "#FFB633") ;; Active search (`isearch`), regex backslashes, modified buffer status, warnings
(accent_pink "#EF89DF") ;; Active mode-line/tabs, modeline accent bar
(bright_green "#19BD56") ;; (Currently unused in faces)
(bright_cyan "#9EDEEE") ;; hl-line hl-tab
(light_purple "#B197FC")) ;; (Currently unused in faces)
(custom-theme-set-faces
'cutar
;; --- 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 :foreground ,selection-fg))))
`(highlight ((,class (:background ,light_blue :foreground ,bg))))
`(hl-line ((,class (:background ,bright_cyan :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 ,dark_blue :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 ,cyan))))
;; Constants: ansi_3 (Orange)
`(font-lock-constant-face ((,class (:foreground ,orange))))
`(font-lock-builtin-face ((,class (:foreground ,light_red)))) ;; 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 :foreground ,selection-fg))))
`(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 :foreground ,selection-fg))))
;; --- 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 'cutar)
;;; cutar-theme.el ends here
+167
View File
@@ -0,0 +1,167 @@
;;; cutar-theme.el --- A high-contrast dark theme with blue/pink accents -*- lexical-binding: t; no-byte-compile: t; -*-
(deftheme cutarv32
"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 "#f0b94a") ;; 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 "#c76e2a" ) ;; 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 "#17dbe6") ;; hl-line hl-tab
(light_purple "#c8a0f2")) ;; (Currently unused in faces)
(custom-theme-set-faces
'cutarv32
;; --- 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 ,dark_blue :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 ,orange))))
`(font-lock-builtin-face ((,class (:foreground ,light_red)))) ;; 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 'cutarv32)
;;; cutarv32-theme.el ends here
+167
View File
@@ -0,0 +1,167 @@
;;; cutarv32_dark-theme.el --- A high-contrast dark theme with blue/pink accents -*- lexical-binding: t; no-byte-compile: t; -*-
(deftheme cutarv32_dark
"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 "#0d0d0d") ;; Default background
(fg "#f8f8ff") ;; Default foreground
(cursor "#f8f8ff") ;; Cursor bg (matches `bg`; visibility depends on `cursor-type`)
(selection "#f0b94a") ;; 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 "#c76e2a" ) ;; 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 "#17dbe6") ;; hl-line hl-tab
(light_purple "#c8a0f2")) ;; (Currently unused in faces)
(custom-theme-set-faces
'cutarv32_dark
;; --- 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 ,dark_blue :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 ,orange))))
`(font-lock-builtin-face ((,class (:foreground ,light_red)))) ;; 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 'cutarv32_dark)
;;; cutarv32_dark-theme.el ends here