From 14cad88fbcd416f6adb25f561c72ebdc397ff91f Mon Sep 17 00:00:00 2001 From: Tom Willemsen Date: Wed, 9 Jan 2013 02:41:08 +0100 Subject: Rewrite * (Mostly) new/different colors * Some additions Use a set of functions to generate colors based on several base colors to provide some variation. --- yoshi-theme.el | 203 +++++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 139 insertions(+), 64 deletions(-) (limited to 'yoshi-theme.el') diff --git a/yoshi-theme.el b/yoshi-theme.el index 960d4df..5385751 100644 --- a/yoshi-theme.el +++ b/yoshi-theme.el @@ -4,7 +4,7 @@ ;; Author: Tom Willemsen ;; Keywords: faces -;; Version: 1.0.0 +;; Version: 2.0.0 ;; 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 @@ -26,72 +26,147 @@ ;;; Code: +(require 'color) + (deftheme yoshi "Created 2012-09-24") -(custom-theme-set-faces - 'yoshi - '(default ((t (:background "#111113" :foreground "#eeeeec")))) - '(flymake-errline ((t (:background nil :underline (:color "#ff756e" :style wave))))) - '(flymake-infoline ((t (:background nil :underline (:color "#78a2c1" :style wave))))) - '(flymake-warnline ((t (:background nil :underline (:color "#ffbb56" :style wave))))) - '(flyspell-duplicate ((t (:foreground nil :underline (:color "#ffbb56" :style wave))))) - '(flyspell-incorrect ((t (:foreground nil :underline (:color "#ff756e" :style wave))))) - '(font-lock-comment-delimiter-face ((t (:foreground "#999999" :slant italic :weight bold)))) - '(font-lock-comment-face ((t (:foreground "#a9a9a9" :slant italic)))) - '(font-lock-constant-face ((t (:foreground "#93d8d8")))) - '(font-lock-doc-face ((t (:foreground "#9ad870")))) - '(font-lock-function-name-face ((t (:foreground "#c39cc3")))) - '(font-lock-keyword-face ((t (:foreground "#cfce29")))) - '(font-lock-string-face ((t (:foreground "#ffbd5c")))) - '(font-lock-type-face ((t (:foreground "#78a2c1" :weight bold)))) - '(font-lock-variable-name-face ((t (:foreground "#ff756e")))) - '(font-lock-warning-face ((t (:foreground "#ff756e" :weight bold)))) - '(highlight ((t (:background "#171719")))) - '(highlight-80+ ((t (:underline (:color "#ff756e" :style wave) :background nil)))) - '(ido-subdir ((t (:foreground "#ff756e")))) - '(italic ((t (:slant italic)))) - '(jabber-chat-prompt-foreign ((t (:foreground "#ff756e")))) - '(jabber-chat-prompt-local ((t (:foreground "#78a2c1")))) - '(jabber-roster-user-online ((t (:foreground "#769ff2")))) - '(link ((t (:foreground "#ffbb56" :underline t)))) - '(magit-item-highlight ((t (:weight bold)))) - '(markdown-header-face-1 ((t (:foreground "#78a2c1")))) - '(markdown-header-face-2 ((t (:foreground "#93d8d8")))) - '(markdown-header-face-3 ((t (:foreground "#9ad870")))) - '(markdown-header-face-4 ((t (:foreground "#c39cc3")))) - '(markdown-header-face-5 ((t (:foreground "#ff756e")))) - '(markdown-header-face-6 ((t (:foreground "#a9a9a9")))) - '(minibuffer-prompt ((t (:foreground "#78a2c1")))) - '(mode-line ((t (:background "#222224" :foreground "#eeeeec" :box nil)))) - '(mode-line-inactive ((t (:background "#171719" :foreground "#999999" :box nil)))) - '(org-document-title ((t (:foreground "#ffbb56" :height 1.5)))) - '(org-headline-done ((t (:foreground "#a9a9a9" :strike-through t)))) - '(org-level-1 ((t (:foreground "#78a2c1")))) - '(org-level-2 ((t (:foreground "#93d8d8")))) - '(org-level-3 ((t (:foreground "#9ad870")))) - '(org-level-4 ((t (:foreground "#c39cc3")))) - '(org-level-5 ((t (:foreground "#ff756e")))) - '(org-level-6 ((t (:foreground "#a9a9a9")))) - '(org-level-7 ((t (:foreground "#ffbb56")))) - '(org-level-8 ((t (:foreground "#999999")))) - '(pp^L-highlight ((t (:box nil :foreground "#555557")))) - '(region ((t (:background "#2729b6")))) - '(rst-level-1 ((t (:background nil)))) - '(rst-level-2 ((t (:background nil)))) - '(rst-level-3 ((t (:background nil)))) - '(rst-level-4 ((t (:background nil)))) - '(rst-level-5 ((t (:background nil)))) - '(rst-level-6 ((t (:background nil)))) - '(term-color-black ((t (:background "#171719" :foreground "#999999")))) - '(term-color-blue ((t (:background "#2729b6" :foreground "#78a2c1")))) - '(term-color-cyan ((t (:background "#208181" :foreground "#93d8d8")))) - '(term-color-green ((t (:background "#405c2e" :foreground "#9ad870")))) - '(term-color-magenta ((t (:background "#5e325d" :foreground "#c39cc3")))) - '(term-color-red ((t (:background "#973732" :foreground "#ff756e")))) - '(term-color-white ((t (:background "#222224" :foreground "#a9a9a9")))) - '(term-color-yellow ((t (:background "#835c0e" :foreground "#ffbb56")))) - ) +(defun yoshi-fmt-color (rgb) + (format "#%02x%02x%02x" (car rgb) (cadr rgb) (caddr rgb))) + +(defun yoshi-inclusive-color-gradient (start stop step-number) + (let ((start-rgb (color-name-to-rgb start)) + (stop-rgb (color-name-to-rgb stop))) + `(,start + ,@(mapcar (lambda (color) (apply 'color-rgb-to-hex color)) + (color-gradient start-rgb stop-rgb (- step-number 2))) + ,stop))) + +(defun yoshi-make-color-variations (name base-rgb) + (let* ((split-rgb (yoshi-split-rgb base-rgb)) + (colors + (yoshi-inclusive-color-gradient + (yoshi-fmt-color split-rgb) + (yoshi-fmt-color (mapcar (lambda (c) (round (* c 0.548))) split-rgb)) 4)) + (idx 0)) + (mapcar + (lambda (color) + (list (intern (concat (symbol-name name) "-" + (number-to-string (setq idx (1+ idx))))) + color)) + colors))) + +(defun yoshi-make-colors (&rest list) + (apply 'nconc + (mapcar (lambda (i) + (yoshi-make-color-variations (car i) (cadr i))) + list))) + +(defun yoshi-split-rgb (rgb) + (list + (/ (logand #xff0000 rgb) #x10000) + (/ (logand #x00ff00 rgb) #x100) + (logand #x0000ff rgb))) + +(defmacro with-yoshi-colors (&rest body) + `(let ,(yoshi-make-colors + '(black #x222224) + '(white #xeeeeec) + '(blue #x78a2c1) + '(cyan #x75bdbd) + '(green #x4ac94f) + '(magenta #xc68ac6) + '(red #xff837d) + '(yellow #xa7a721) + '(orange #xff9800)) + ,@body)) + +(with-yoshi-colors + (custom-theme-set-faces + 'yoshi + + `(default ((t (:background "#111113" :foreground ,white-1)))) + `(flymake-errline ((t (:background nil :underline (:color ,red-2 :style wave))))) + `(flymake-infoline ((t (:background nil :underline (:color ,blue-2 :style wave))))) + `(flymake-warnline ((t (:background nil :underline (:color ,orange-2 :style wave))))) + `(flyspell-duplicate ((t (:foreground nil :underline (:color ,orange-2 :style wave))))) + `(flyspell-incorrect ((t (:foreground nil :underline (:color ,red-2 :style wave))))) + `(font-lock-comment-delimiter-face ((t (:foreground ,white-4 :slant italic :weight bold)))) + `(font-lock-comment-face ((t (:foreground ,white-3 :slant italic)))) + `(font-lock-constant-face ((t (:foreground ,cyan-1)))) + `(font-lock-doc-face ((t (:foreground ,green-1)))) + `(font-lock-function-name-face ((t (:foreground ,magenta-1)))) + `(font-lock-keyword-face ((t (:foreground ,yellow-1)))) + `(font-lock-string-face ((t (:foreground ,orange-2)))) + `(font-lock-type-face ((t (:foreground ,blue-2 :weight bold)))) + `(font-lock-variable-name-face ((t (:foreground ,red-2)))) + `(font-lock-warning-face ((t (:foreground ,orange-2 :weight bold)))) + `(highlight ((t (:background ,black-1)))) + `(highlight-80+ ((t (:underline (:color ,red-3 :style wave) :background nil)))) + `(ido-subdir ((t (:foreground ,red-2)))) + `(italic ((t (:slant italic :underline nil)))) + `(jabber-chat-prompt-foreign ((t (:foreground ,blue-1)))) + `(jabber-chat-prompt-local ((t (:foreground ,cyan-3)))) + `(jabber-chat-prompt-system ((t (:foreground ,yellow-1)))) + `(jabber-rare-time-face ((t (:foreground ,cyan-2 :weight bold)))) + `(jabber-roster-user-online ((t (:foreground ,blue-1)))) + `(link ((t (:foreground ,orange-1 :underline t)))) + `(link-visited ((t (:foreground ,orange-2 :underline t)))) + `(magit-item-highlight ((t (:weight bold :background nil)))) + `(markdown-header-face-1 ((t (:foreground ,blue-1)))) + `(markdown-header-face-2 ((t (:foreground ,cyan-1)))) + `(markdown-header-face-3 ((t (:foreground ,green-1)))) + `(markdown-header-face-4 ((t (:foreground ,magenta-1)))) + `(markdown-header-face-5 ((t (:foreground ,red-1)))) + `(markdown-header-face-6 ((t (:foreground ,white-3)))) + `(minibuffer-prompt ((t (:foreground ,blue-1)))) + `(mode-line ((t (:background ,black-1 :foreground ,white-1 :box nil)))) + `(mode-line-inactive ((t (:background ,black-4 :foreground ,white-4 :box nil)))) + `(org-agenda-calendar-sexp ((t (:foreground ,yellow-1)))) + `(org-agenda-current-time ((t (:foreground ,orange-2 :weight bold)))) + `(org-agenda-date ((t (:foreground ,cyan-2)))) + `(org-agenda-date-today ((t (:foreground ,cyan-1 :underline t)))) + `(org-agenda-date-weekend ((t (:foreground ,cyan-3)))) + `(org-agenda-structure ((t (:foreground ,blue-1)))) + `(org-checkbox-statistics-done ((t (:foreground ,cyan-4)))) + `(org-checkbox-statistics-todo ((t (:foreground ,cyan-3)))) + `(org-document-title ((t (:foreground ,orange-2 :height 1.5)))) + `(org-headline-done ((t (:foreground ,white-3 :strike-through t)))) + `(org-level-1 ((t (:foreground ,blue-1)))) + `(org-level-2 ((t (:foreground ,cyan-1)))) + `(org-level-3 ((t (:foreground ,green-1)))) + `(org-level-4 ((t (:foreground ,magenta-1)))) + `(org-level-5 ((t (:foreground ,red-1)))) + `(org-level-6 ((t (:foreground ,yellow-1)))) + `(org-level-7 ((t (:foreground ,orange-1)))) + `(org-level-8 ((t (:foreground ,magenta-2)))) + `(org-scheduled ((t (:foreground ,orange-3)))) + `(org-scheduled-previously ((t (:foreground ,red-1 :bold t)))) + `(org-scheduled-today ((t (:foreground ,orange-1 :underline t)))) + `(org-time-grid ((t (:foreground ,orange-1)))) + `(pp^L-highlight ((t (:box nil :foreground ,white-4)))) + `(region ((t (:background ,blue-4)))) + `(rst-level-1 ((t (:background nil :foreground ,blue-1)))) + `(rst-level-2 ((t (:background nil :foreground ,cyan-1)))) + `(rst-level-3 ((t (:background nil :foreground ,green-1)))) + `(rst-level-4 ((t (:background nil :foreground ,magenta-1)))) + `(rst-level-5 ((t (:background nil :foreground ,red-1)))) + `(rst-level-6 ((t (:background nil :foreground ,yellow-1)))) + `(sh-heredoc ((t (:foreground ,orange-1)))) + `(slime-repl-input-face ((t (:foreground ,white-4)))) + `(slime-repl-inputed-output-face ((t (:foreground ,white-3)))) + `(slime-repl-output-face ((t (:foreground ,white-1)))) + `(slime-repl-prompt-face ((t (:foreground ,blue-1)))) + `(term-color-black ((t (:background ,black-4 :foreground ,black-1)))) + `(term-color-blue ((t (:background ,blue-4 :foreground ,blue-1)))) + `(term-color-cyan ((t (:background ,cyan-4 :foreground ,cyan-1)))) + `(term-color-green ((t (:background ,green-4 :foreground ,green-1)))) + `(term-color-magenta ((t (:background ,magenta-4 :foreground ,magenta-1)))) + `(term-color-red ((t (:background ,red-4 :foreground ,red-1)))) + `(term-color-white ((t (:background ,white-4 :foreground ,white-1)))) + `(term-color-yellow ((t (:background ,yellow-4 :foreground ,yellow-1)))) + + )) (provide-theme 'yoshi) ;;; yoshi-theme.el ends here -- cgit v1.2.3-54-g00ecf