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
+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