nix/home/emacs/config/lib/naysayer-light-theme.el
2025-11-19 21:11:11 -06:00

192 lines
8.3 KiB
EmacsLisp

;;; naysayer-light-theme.el --- The naysayer light color theme
;; Author: Nick Aversano <nickav@users.noreply.github.com>
;; Version: 0.33
;; Filename: naysayer-light-theme.el
;; Package-Requires: ((emacs "24"))
;; URL: https://github.com/nickav/naysayer-theme.el
;; License: GPL-3+
;;; Commentary:
;; Light version of the naysayer theme. Bright color scheme with warm tones.
;;; Code:
(unless (>= emacs-major-version 24)
(error "The naysayer theme requires Emacs 24 or later!"))
(deftheme naysayer-light "The naysayer light color theme")
;; Monokai colors
(defcustom naysayer-theme-yellow "#E6DB74" "Primary colors - yellow" :type 'string :group 'monokai)
(defcustom naysayer-theme-orange "#FD971F" "Primary colors - orange" :type 'string :group 'monokai)
(defcustom naysayer-theme-red "#F92672" "Primary colors - red" :type 'string :group 'monokai)
(defcustom naysayer-theme-magenta "#FD5FF0" "Primary colors - magenta" :type 'string :group 'monokai)
(defcustom naysayer-theme-blue "#66D9EF" "Primary colors - blue" :type 'string :group 'monokai)
(defcustom naysayer-theme-green "#A6E22E" "Primary colors - green" :type 'string :group 'monokai)
(defcustom naysayer-theme-cyan "#A1EFE4" "Primary colors - cyan" :type 'string :group 'monokai)
(defcustom naysayer-theme-violet "#AE81FF" "Primary colors - violet" :type 'string :group 'monokai)
(let ((background "#fafaf5")
(gutters "#fafaf5")
(gutter-fg "#8b7355")
(gutters-active "#f0f0e8")
(builtin "#003030")
(selection "#c8e8c8")
(text "#5a4a3a")
(comments "#18a010")
(punctuation "#18a010")
(keywords "#B05A00")
(variables "#5a4a3a")
(functions "#000000")
(methods "#000000")
(strings "#0c7060")
(constants "#003030")
(macros "#18a010")
(numbers "#003030")
(white "#000000")
(error "#c05040")
(warning "#c05040")
(highlight-line "#e8f4e8")
(line-fg "#70a070")
(modeline-bg "#18a010")
(modeline-fg "#fafaf5"))
(custom-theme-set-faces
'naysayer-light
;; Default colors
;; *****************************************************************************
`(default ((t (:foreground ,text :background ,background, :weight normal))))
`(region ((t (:foreground nil :background ,selection))))
`(cursor ((t (:background ,white ))))
`(fringe ((t (:background ,background :foreground ,white))))
`(linum ((t (:background ,background :foreground ,gutter-fg))))
`(highlight ((t (:foreground nil :background ,selection))))
;; Font lock faces
;; *****************************************************************************
`(font-lock-keyword-face ((t (:foreground ,keywords))))
`(font-lock-type-face ((t (:foreground ,punctuation))))
`(font-lock-constant-face ((t (:foreground ,constants))))
`(font-lock-variable-name-face ((t (:foreground ,variables))))
`(font-lock-builtin-face ((t (:foreground ,builtin))))
`(font-lock-string-face ((t (:foreground ,strings))))
`(font-lock-comment-face ((t (:foreground ,comments))))
`(font-lock-comment-delimiter-face ((t (:foreground ,comments))))
`(font-lock-doc-face ((t (:foreground ,comments))))
`(font-lock-function-name-face ((t (:foreground ,functions))))
`(font-lock-doc-string-face ((t (:foreground ,strings))))
`(font-lock-preprocessor-face ((t (:foreground ,macros))))
`(font-lock-warning-face ((t (:foreground ,warning))))
;; Plugins
;; *****************************************************************************
`(trailing-whitespace ((t (:foreground nil :background ,warning))))
`(whitespace-trailing ((t (:background nil :foreground ,warning :inverse-video t))))
`(linum ((t (:foreground ,line-fg :background ,background))))
`(linum-relative-current-face ((t (:foreground ,white :background ,background))))
`(line-number ((t (:foreground ,line-fg :background ,background))))
`(line-number-current-line ((t (:foreground ,white :background ,background))))
;; hl-line-mode
`(hl-line ((t (:background ,highlight-line))))
`(hl-line-face ((t (:background ,highlight-line))))
;; rainbow-delimiters
`(rainbow-delimiters-depth-1-face ((t (:foreground ,naysayer-theme-violet))))
`(rainbow-delimiters-depth-2-face ((t (:foreground ,naysayer-theme-blue))))
`(rainbow-delimiters-depth-3-face ((t (:foreground ,naysayer-theme-green))))
`(rainbow-delimiters-depth-4-face ((t (:foreground ,naysayer-theme-yellow))))
`(rainbow-delimiters-depth-5-face ((t (:foreground ,naysayer-theme-orange))))
`(rainbow-delimiters-depth-6-face ((t (:foreground ,naysayer-theme-red))))
`(rainbow-delimiters-depth-7-face ((t (:foreground ,naysayer-theme-violet))))
`(rainbow-delimiters-depth-8-face ((t (:foreground ,naysayer-theme-blue))))
`(rainbow-delimiters-depth-9-face ((t (:foreground ,naysayer-theme-green))))
`(rainbow-delimiters-depth-10-face ((t (:foreground ,naysayer-theme-yellow))))
`(rainbow-delimiters-depth-11-face ((t (:foreground ,naysayer-theme-orange))))
`(rainbow-delimiters-depth-12-face ((t (:foreground ,naysayer-theme-red))))
;; which-func
`(which-func ((t (:inverse-video unspecified
:underline unspecified
:foreground ,background
:weight bold
:box nil))))
;; mode-line and powerline
`(mode-line-buffer-id ((t (:foreground ,modeline-fg :distant-foreground ,modeline-bg :text ,modeline-fg :weight bold))))
`(mode-line ((t (:inverse-video unspecified
:underline unspecified
:foreground ,modeline-fg
:background ,modeline-bg
:box nil))))
`(powerline-active1 ((t (:background ,modeline-bg :foreground ,modeline-fg))))
`(powerline-active2 ((t (:background ,modeline-bg :foreground ,modeline-fg))))
`(mode-line-inactive ((t (:inverse-video unspecified
:underline unspecified
:foreground ,text
:background ,background
:box nil))))
`(powerline-inactive1 ((t (:background ,background :foreground ,text))))
`(powerline-inactive2 ((t (:background ,background :foreground ,text))))
;; better compatibility with default DOOM mode-line
`(error ((t (:foreground nil :weight normal))))
`(doom-modeline-project-dir ((t (:foreground nil :weight bold))))
;; js2-mode
`(js2-function-call ((t (:inherit (font-lock-function-name-face)))))
`(js2-function-param ((t (:foreground ,text))))
`(js2-jsdoc-tag ((t (:foreground ,keywords))))
`(js2-jsdoc-type ((t (:foreground ,constants))))
`(js2-jsdoc-value((t (:foreground ,text))))
`(js2-object-property ((t (:foreground ,text))))
`(js2-external-variable ((t (:foreground ,constants))))
`(js2-error ((t (:foreground ,error))))
`(js2-warning ((t (:foreground ,warning))))
;; highlight numbers
`(highlight-numbers-number ((t (:foreground ,numbers))))
;; tab-bar-mode
`(tab-bar ((t (:inherit modeline))))
`(tab-bar-tab ((t (:foreground ,modeline-fg :background ,modeline-bg))))
`(tab-bar-tab-inactive ((t (:foreground ,text :background ,background))))
)
(custom-theme-set-faces
'naysayer-light
`(my-elisp-plist-keyword-face ((t (:foreground ,keywords)))))
(font-lock-add-keywords
'emacs-lisp-mode
'(("\\(:[a-zA-Z0-9-]+\\)" 1 'my-elisp-plist-keyword-face)))
(custom-theme-set-variables
'naysayer-light
'(linum-format " %5i ")
)
)
;;;###autoload
(when (and (boundp 'custom-theme-load-path) load-file-name)
(add-to-list 'custom-theme-load-path
(file-name-as-directory (file-name-directory load-file-name))))
;; *****************************************************************************
(provide-theme 'naysayer-light)
;; Local Variables:
;; no-byte-compile: t
;; End:
(provide 'naysayer-light-theme)
;;; naysayer-light-theme.el ends here