119 lines
5.1 KiB
EmacsLisp
119 lines
5.1 KiB
EmacsLisp
;;; 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
|