dotfiles/dot_barak-theme.el
2024-05-18 19:08:15 -07:00

261 lines
10 KiB
EmacsLisp

;;; Code:
(deftheme barak "Barak's Theme")
;;; Color Palette
(defvar zenburn-colors-alist
'(("zenburn-fg+1" . "#FFFFEF")
("zenburn-fg" . "#DCDCCC")
("zenburn-fg-1" . "#656555")
("zenburn-bg-2" . "#000000")
("zenburn-bg-1" . "#2B2B2B")
("zenburn-bg-05" . "#383838")
("zenburn-bg" . "#3F3F3F")
("zenburn-bg+1" . "#4F4F4F")
("zenburn-bg+2" . "#5F5F5F")
("zenburn-bg+3" . "#6F6F6F")
("zenburn-red+1" . "#DCA3A3")
("zenburn-red" . "#CC9393")
("zenburn-red-1" . "#BC8383")
("zenburn-red-2" . "#AC7373")
("zenburn-red-3" . "#9C6363")
("zenburn-red-4" . "#8C5353")
("zenburn-orange" . "#DFAF8F")
("zenburn-yellow" . "#F0DFAF")
("zenburn-yellow-1" . "#E0CF9F")
("zenburn-yellow-2" . "#D0BF8F")
("zenburn-green-1" . "#5F7F5F")
("zenburn-green" . "#7F9F7F")
("zenburn-green+1" . "#8FB28F")
("zenburn-green+2" . "#9FC59F")
("zenburn-green+3" . "#AFD8AF")
("zenburn-green+4" . "#BFEBBF")
("zenburn-cyan" . "#93E0E3")
("zenburn-blue+1" . "#94BFF3")
("zenburn-blue" . "#8CD0D3")
("zenburn-blue-1" . "#7CB8BB")
("zenburn-blue-2" . "#6CA0A3")
("zenburn-blue-3" . "#5C888B")
("zenburn-blue-4" . "#4C7073")
("zenburn-blue-5" . "#366060")
("zenburn-magenta" . "#DC8CC3")))
(defvar barak-colors-alist
'(("background" . "#000000")
("cursor" . "#A7A7A7")
("fg-default" . "#E0E0E0")
("mouse" . "sienna1")
("comment" . "#238E23")
("constant" . "#E3AC3D")
("docstring" . "DarkOrange")
("zenburn-fg+1" . "#FFFFEF")
("zenburn-fg" . "#DCDCCC")
("zenburn-fg-1" . "#656555")
("zenburn-bg-2" . "#000000")
("zenburn-bg-1" . "#2B2B2B")
("zenburn-bg-05" . "#383838")
("zenburn-bg" . "#3F3F3F")
("zenburn-bg+1" . "#4F4F4F")
("zenburn-bg+2" . "#5F5F5F")
("zenburn-bg+3" . "#6F6F6F")
("zenburn-red+1" . "#DCA3A3")
("zenburn-red" . "#CC9393")
("zenburn-red-1" . "#BC8383")
("zenburn-red-2" . "#AC7373")
("zenburn-red-3" . "#9C6363")
("zenburn-red-4" . "#8C5353")
("zenburn-orange" . "#DFAF8F")
("zenburn-yellow" . "#F0DFAF")
("zenburn-yellow-1" . "#E0CF9F")
("zenburn-yellow-2" . "#D0BF8F")
("zenburn-green-1" . "#5F7F5F")
("zenburn-green" . "#7F9F7F")
("zenburn-green+1" . "#8FB28F")
("zenburn-green+2" . "#9FC59F")
("zenburn-green+3" . "#AFD8AF")
("zenburn-green+4" . "#BFEBBF")
("zenburn-cyan" . "#93E0E3")
("zenburn-blue+1" . "#94BFF3")
("zenburn-blue" . "#8CD0D3")
("zenburn-blue-1" . "#7CB8BB")
("zenburn-blue-2" . "#6CA0A3")
("zenburn-blue-3" . "#5C888B")
("zenburn-blue-4" . "#4C7073")
("zenburn-blue-5" . "#366060")
("zenburn-magenta" . "#DC8CC3"))
"List of Zenburn colors.
Each element has the form (NAME . HEX).")
(defmacro barak-with-color-variables (&rest body)
"`let' bind all colors defined in `zenburn-colors-alist' around BODY.
Also bind `class' to ((class color) (min-colors 89))."
(declare (indent 0))
`(let ((class '((class color) (min-colors 89)))
,@(mapcar (lambda (cons)
(list (intern (car cons)) (cdr cons)))
barak-colors-alist))
,@body))
(defmacro zenburn-with-color-variables (&rest body)
"`let' bind all colors defined in `zenburn-colors-alist' around BODY.
Also bind `class' to ((class color) (min-colors 89))."
(declare (indent 0))
`(let ((class '((class color) (min-colors 89)))
,@(mapcar (lambda (cons)
(list (intern (car cons)) (cdr cons)))
zenburn-colors-alist))
,@body))
;;; Theme Faces
(barak-with-color-variables
(custom-theme-set-faces
'barak
;;;; Built-in
;;;;; basic coloring
'(button ((t (:underline t))))
`(link ((t (:foreground ,zenburn-yellow :underline t :weight bold))))
`(link-visited ((t (:foreground ,zenburn-yellow-2 :underline t :weight normal))))
`(default ((t (:foreground ,fg-default :background ,background))))
`(cursor ((t (:foreground ,cursor :background ,zenburn-fg+1))))
`(blue ((t (:foreground "blue"))))
`(bold ((t (:bold t))))
`(bold-italic ((t (:bold t))))
`(border-glyph ((t (nil))))
`(buffers-tab ((t (:background "#121212" :foreground "#E0E0E0"))))
`(font-lock-builtin-face ((t (:foreground "#E0E0E0"))))
`(font-lock-comment-face ((t (:foreground "#238E23"))))
`(font-lock-constant-face ((t (:foreground "#E3AC3D"))))
`(font-lock-doc-string-face ((t (:foreground "DarkOrange"))))
`(font-lock-function-name-face ((t (:foreground "#C5A6FF"))))
`(font-lock-keyword-face ((t (:bold t :foreground "#4876FF"))))
`(font-lock-preprocessor-face ((t (:foreground "#E9DFEF"))))
`(font-lock-reference-face ((t (:foreground "#E1634F"))))
`(font-lock-regexp-grouping-backslash ((t (:foreground "#E9C062"))))
`(font-lock-regexp-grouping-construct ((t (:foreground "red"))))
`(font-lock-string-face ((t (:foreground "#F05656"))))
`(font-lock-type-face ((t (:foreground "#73E1E6"))))
`(font-lock-variable-name-face ((t (:foreground "#00BFFF"))))
`(font-lock-warning-face ((t (:bold t :foreground "Pink"))))
`(gui-element ((t (:background "#A0A0A0" :foreground "black"))))
`(region ((t (:background "#364458"))))
`(mode-line ((t (:background "grey75" :foreground "black"))))
`(highlight ((t (:background "#222222"))))
`(highline-face ((t (:background "SeaGreen"))))
`(italic ((t (nil))))
`(left-margin ((t (nil))))
`(text-cursor ((t (:background "green" :foreground "black"))))
`(toolbar ((t (nil))))
`(tabbar-default ((t (:background "black" :foreground "grey75"))))
`(tabbar-selected ((t (:background "grey75" :foreground "black"))))
`(tabbar-highlight ((t (:bold t))))
`(underline ((nil (:underline nil))))
'(match ((t (:bold t :background nil))))
; company mode
`(company-tooltip ((t (:background "#303840" :foreground "#e0e0e0"))))
`(company-tooltip-annotation ((t (:bold t :background "#303840" :foreground "#cae682"))))
`(company-tooltip-selection ((t (:bold t :background "#505860" :foreground "#ffa000"))))
`(company-scrollbar-bg ((t (:background "#505860" :foreground "#505860"))))
`(company-scrollbar-fg ((t (:background "#808890" :foreground "#808890"))))
; powerline
`(powerline-active1 ((t (:background "#303840" :foreground "#e0e0e0"))))
`(powerline-active2 ((t (:background "#505860" :foreground "#ffa000"))))
; motion-face
`(spacemacs-motion-face ((t (:background "#5f87ff" :foreground "#ffffff"))))
`(spacemacs-normal-face ((t (:background "#5f87ff" :foreground "#ffffff"))))
`(spacemacs-replace-face ((t (:background "#870000" :foreground "#ffffff"))))
`(spacemacs-visual-face ((t (:background "#ffac00" :foreground "#ffffff"))))
))
;;; Theme Variables
(zenburn-with-color-variables
(custom-theme-set-variables
'barak
;;;;; ansi-color
`(ansi-color-names-vector [,zenburn-bg ,zenburn-red ,zenburn-green ,zenburn-yellow
,zenburn-blue ,zenburn-magenta ,zenburn-cyan ,zenburn-fg])
;;;;; fill-column-indicator
`(fci-rule-color ,zenburn-bg-05)
;;;;; vc-annotate
`(vc-annotate-color-map
'(( 20. . ,zenburn-red-1)
( 40. . ,zenburn-red)
( 60. . ,zenburn-orange)
( 80. . ,zenburn-yellow-2)
(100. . ,zenburn-yellow-1)
(120. . ,zenburn-yellow)
(140. . ,zenburn-green-1)
(160. . ,zenburn-green)
(180. . ,zenburn-green+1)
(200. . ,zenburn-green+2)
(220. . ,zenburn-green+3)
(240. . ,zenburn-green+4)
(260. . ,zenburn-cyan)
(280. . ,zenburn-blue-2)
(300. . ,zenburn-blue-1)
(320. . ,zenburn-blue)
(340. . ,zenburn-blue+1)
(360. . ,zenburn-magenta)))
`(vc-annotate-very-old-color ,zenburn-magenta)
`(vc-annotate-background ,zenburn-bg-1)
))
;;; Rainbow Support
;; (declare-function rainbow-mode 'rainbow-mode)
;; (declare-function rainbow-colorize-by-assoc 'rainbow-mode)
(defvar barak-add-font-lock-keywords nil
"Whether to add font-lock keywords for zenburn color names.
In buffers visiting library `zenburn-theme.el' the zenburn
specific keywords are always added. In all other Emacs-Lisp
buffers this variable controls whether this should be done.
This requires library `rainbow-mode'.")
(defvar barak-colors-font-lock-keywords nil)
;; (defadvice rainbow-turn-on (after zenburn activate)
;; "Maybe also add font-lock keywords for zenburn colors."
;; (when (and (derived-mode-p 'emacs-lisp-mode)
;; (or zenburn-add-font-lock-keywords
;; (equal (file-name-nondirectory (buffer-file-name))
;; "zenburn-theme.el")))
;; (unless zenburn-colors-font-lock-keywords
;; (setq zenburn-colors-font-lock-keywords
;; `((,(regexp-opt (mapcar 'car zenburn-colors-alist) 'words)
;; (0 (rainbow-colorize-by-assoc zenburn-colors-alist))))))
;; (font-lock-add-keywords nil zenburn-colors-font-lock-keywords)))
;; (defadvice rainbow-turn-off (after zenburn activate)
;; "Also remove font-lock keywords for zenburn colors."
;; (font-lock-remove-keywords nil zenburn-colors-font-lock-keywords))
;;; Footer
;;;###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))))
;(defun color-theme-barak-extras ()
;; Highlight numbers
;(add-hook 'after-change-major-mode-hook
;(lambda () (font-lock-add-keywords
;nil
;'(("\\<\\(\\(0[xX]\\|0[bB]\\)?-?[0-9a-fA-F]+\\.?[0-9]*?[fFlL]?\\)\\>" 1 '((t (:foreground "#E3AC3D")))))))))
(provide-theme 'barak)
;;;###autoload
;; (add-to-list 'safe-local-eval-forms
;; '(when (require 'rainbow-mode nil t) (rainbow-mode 1)))
;; Local Variables:
;; no-byte-compile: t
;; indent-tabs-mode: nil
;; eval: (when (require 'rainbow-mode nil t) (rainbow-mode 1))
;; End: