branch: elpa/spacemacs-theme
commit 3531706209e410af5ff7fffcde4e41a56729a6c8
Author: nashamri <designernas...@gmail.com>
Commit: nashamri <designernas...@gmail.com>

    Fix (#209) regression in custom colors after enabling lexical-binding
---
 spacemacs-theme.el | 152 +++++++++++++++++++++++++++--------------------------
 1 file changed, 78 insertions(+), 74 deletions(-)

diff --git a/spacemacs-theme.el b/spacemacs-theme.el
index 0e444b1f69..a74f86a0e3 100644
--- a/spacemacs-theme.el
+++ b/spacemacs-theme.el
@@ -92,79 +92,83 @@ to `auto', tags may not be properly aligned. "
   :type 'boolean
   :group 'spacemacs-theme)
 
-(defun true-color-p ()
-  (or
-   (display-graphic-p)
-   (= (tty-display-color-cells) 16777216)))
-
 (defun create-spacemacs-theme (variant theme-name)
-  (let ((class '((class color) (min-colors 89))) ;;              ~~ Dark ~~    
                          ~~ Light ~~
-        ;;                                                          GUI       
TER                           GUI       TER
-        ;; generic
-        (act1          (if (eq variant 'dark) (if (true-color-p) "#222226" 
"#121212") (if (true-color-p) "#e7e5eb" "#d7dfff")))
-        (act2          (if (eq variant 'dark) (if (true-color-p) "#5d4d7a" 
"#444444") (if (true-color-p) "#d3d3e7" "#afafd7")))
-        (base          (if (eq variant 'dark) (if (true-color-p) "#b2b2b2" 
"#b2b2b2") (if (true-color-p) "#655370" "#5f5f87")))
-        (base-dim      (if (eq variant 'dark) (if (true-color-p) "#686868" 
"#585858") (if (true-color-p) "#a094a2" "#afafd7")))
-        (bg1           (if (eq variant 'dark) (if (true-color-p) "#292b2e" 
"#262626") (if (true-color-p) "#fbf8ef" "#ffffff")))
-        (bg2           (if (eq variant 'dark) (if (true-color-p) "#212026" 
"#1c1c1c") (if (true-color-p) "#efeae9" "#e4e4e4")))
-        (bg3           (if (eq variant 'dark) (if (true-color-p) "#100a14" 
"#121212") (if (true-color-p) "#e3dedd" "#d0d0d0")))
-        (bg4           (if (eq variant 'dark) (if (true-color-p) "#0a0814" 
"#080808") (if (true-color-p) "#d2ceda" "#bcbcbc")))
-        (bg-alt        (if (eq variant 'dark) (if (true-color-p) "#42444a" 
"#353535") (if (true-color-p) "#efeae9" "#e4e4e4")))
-        (border        (if (eq variant 'dark) (if (true-color-p) "#5d4d7a" 
"#111111") (if (true-color-p) "#b3b9be" "#b3b9be")))
-        (cblk          (if (eq variant 'dark) (if (true-color-p) "#cbc1d5" 
"#b2b2b2") (if (true-color-p) "#655370" "#5f5f87")))
-        (cblk-bg       (if (eq variant 'dark) (if (true-color-p) "#2f2b33" 
"#262626") (if (true-color-p) "#e8e3f0" "#ffffff")))
-        (cblk-ln       (if (eq variant 'dark) (if (true-color-p) "#827591" 
"#af5faf") (if (true-color-p) "#9380b2" "#af5fdf")))
-        (cblk-ln-bg    (if (eq variant 'dark) (if (true-color-p) "#373040" 
"#333333") (if (true-color-p) "#ddd8eb" "#dfdfff")))
-        (cursor        (if (eq variant 'dark) (if (true-color-p) "#e3dedd" 
"#d0d0d0") (if (true-color-p) "#100a14" "#121212")))
-        (const         (if (eq variant 'dark) (if (true-color-p) "#a45bad" 
"#d75fd7") (if (true-color-p) "#4e3163" "#8700af")))
-        (comment       (if (eq variant 'dark) (if (true-color-p) "#2aa1ae" 
"#008787") (if (true-color-p) "#2aa1ae" "#008787")))
-        (comment-light (if (eq variant 'dark) (if (true-color-p) "#2aa1ae" 
"#008787") (if (true-color-p) "#a49da5" "#008787")))
-        (comment-bg    (if (eq variant 'dark) (if (true-color-p) "#292e34" 
"#262626") (if (true-color-p) "#ecf3ec" "#ffffff")))
-        (comp          (if (eq variant 'dark) (if (true-color-p) "#c56ec3" 
"#d75fd7") (if (true-color-p) "#6c4173" "#8700af")))
-        (err           (if (eq variant 'dark) (if (true-color-p) "#e0211d" 
"#e0211d") (if (true-color-p) "#e0211d" "#e0211d")))
-        (func          (if (eq variant 'dark) (if (true-color-p) "#bc6ec5" 
"#d75fd7") (if (true-color-p) "#6c3163" "#8700af")))
-        (head1         (if (eq variant 'dark) (if (true-color-p) "#4f97d7" 
"#268bd2") (if (true-color-p) "#3a81c3" "#268bd2")))
-        (head1-bg      (if (eq variant 'dark) (if (true-color-p) "#293239" 
"#262626") (if (true-color-p) "#edf1ed" "#ffffff")))
-        (head2         (if (eq variant 'dark) (if (true-color-p) "#2d9574" 
"#2aa198") (if (true-color-p) "#2d9574" "#2aa198")))
-        (head2-bg      (if (eq variant 'dark) (if (true-color-p) "#293235" 
"#262626") (if (true-color-p) "#edf2e9" "#ffffff")))
-        (head3         (if (eq variant 'dark) (if (true-color-p) "#67b11d" 
"#67b11d") (if (true-color-p) "#67b11d" "#5faf00")))
-        (head3-bg      (if (eq variant 'dark) (if (true-color-p) "#293235" 
"#262626") (if (true-color-p) "#edf2e9" "#ffffff")))
-        (head4         (if (eq variant 'dark) (if (true-color-p) "#b1951d" 
"#875f00") (if (true-color-p) "#b1951d" "#875f00")))
-        (head4-bg      (if (eq variant 'dark) (if (true-color-p) "#32322c" 
"#262626") (if (true-color-p) "#f6f1e1" "#ffffff")))
-        (highlight     (if (eq variant 'dark) (if (true-color-p) "#444155" 
"#444444") (if (true-color-p) "#d3d3e7" "#d7d7ff")))
-        (highlight-dim (if (eq variant 'dark) (if (true-color-p) "#3b314d" 
"#444444") (if (true-color-p) "#e7e7fc" "#d7d7ff")))
-        (keyword       (if (eq variant 'dark) (if (true-color-p) "#4f97d7" 
"#268bd2") (if (true-color-p) "#3a81c3" "#268bd2")))
-        (lnum          (if (eq variant 'dark) (if (true-color-p) "#44505c" 
"#444444") (if (true-color-p) "#a8a8bf" "#af87af")))
-        (mat           (if (eq variant 'dark) (if (true-color-p) "#86dc2f" 
"#86dc2f") (if (true-color-p) "#ba2f59" "#af005f")))
-        (meta          (if (eq variant 'dark) (if (true-color-p) "#9f8766" 
"#af875f") (if (true-color-p) "#da8b55" "#df5f5f")))
-        (str           (if (eq variant 'dark) (if (true-color-p) "#2d9574" 
"#2aa198") (if (true-color-p) "#2d9574" "#2aa198")))
-        (suc           (if (eq variant 'dark) (if (true-color-p) "#86dc2f" 
"#86dc2f") (if (true-color-p) "#42ae2c" "#00af00")))
-        (ttip          (if (eq variant 'dark) (if (true-color-p) "#9a9aba" 
"#888888") (if (true-color-p) "#8c799f" "#5f5f87")))
-        (ttip-sl       (if (eq variant 'dark) (if (true-color-p) "#5e5079" 
"#333333") (if (true-color-p) "#c8c6dd" "#afafff")))
-        (ttip-bg       (if (eq variant 'dark) (if (true-color-p) "#34323e" 
"#444444") (if (true-color-p) "#e2e0ea" "#dfdfff")))
-        (type          (if (eq variant 'dark) (if (true-color-p) "#ce537a" 
"#df005f") (if (true-color-p) "#ba2f59" "#af005f")))
-        (var           (if (eq variant 'dark) (if (true-color-p) "#7590db" 
"#8787d7") (if (true-color-p) "#715ab1" "#af5fd7")))
-        (war           (if (eq variant 'dark) (if (true-color-p) "#dc752f" 
"#dc752f") (if (true-color-p) "#dc752f" "#dc752f")))
-
-        ;; colors
-        (aqua          (if (eq variant 'dark) (if (true-color-p) "#2d9574" 
"#2aa198") (if (true-color-p) "#2d9574" "#2aa198")))
-        (aqua-bg       (if (eq variant 'dark) (if (true-color-p) "#293235" 
"#262626") (if (true-color-p) "#edf2e9" "#ffffff")))
-        (green         (if (eq variant 'dark) (if (true-color-p) "#67b11d" 
"#67b11d") (if (true-color-p) "#67b11d" "#5faf00")))
-        (green-bg      (if (eq variant 'dark) (if (true-color-p) "#293235" 
"#262626") (if (true-color-p) "#edf2e9" "#ffffff")))
-        (green-bg-s    (if (eq variant 'dark) (if (true-color-p) "#29422d" 
"#262626") (if (true-color-p) "#dae6d0" "#ffffff")))
-        (cyan          (if (eq variant 'dark) (if (true-color-p) "#28def0" 
"#00ffff") (if (true-color-p) "#21b8c7" "#008080")))
-        (red           (if (eq variant 'dark) (if (true-color-p) "#f2241f" 
"#d70000") (if (true-color-p) "#f2241f" "#d70008")))
-        (red-bg        (if (eq variant 'dark) (if (true-color-p) "#3c2a2c" 
"#262626") (if (true-color-p) "#faede4" "#ffffff")))
-        (red-bg-s      (if (eq variant 'dark) (if (true-color-p) "#512e31" 
"#262626") (if (true-color-p) "#eed9d2" "#ffffff")))
-        (blue          (if (eq variant 'dark) (if (true-color-p) "#4f97d7" 
"#268bd2") (if (true-color-p) "#3a81c3" "#268bd2")))
-        (blue-bg       (if (eq variant 'dark) (if (true-color-p) "#293239" 
"#262626") (if (true-color-p) "#edf1ed" "#d7d7ff")))
-        (blue-bg-s     (if (eq variant 'dark) (if (true-color-p) "#2d4252" 
"#262626") (if (true-color-p) "#d1dcdf" "#d7d7ff")))
-        (magenta       (if (eq variant 'dark) (if (true-color-p) "#a31db1" 
"#af00df") (if (true-color-p) "#a31db1" "#800080")))
-        (yellow        (if (eq variant 'dark) (if (true-color-p) "#b1951d" 
"#875f00") (if (true-color-p) "#b1951d" "#875f00")))
-        (yellow-bg     (if (eq variant 'dark) (if (true-color-p) "#32322c" 
"#262626") (if (true-color-p) "#f6f1e1" "#ffffff"))))
-
-    (dolist (pair spacemacs-theme-custom-colors)
-      (set (car pair) (cdr pair)))
+  (let* ((true-color-p (lambda ()
+                         (or (display-graphic-p)
+                             (= (tty-display-color-cells) 16777216))))
+         ;; Helper function to get custom color or default value
+         (get-color (lambda (color-name default-value)
+                      (or (alist-get color-name spacemacs-theme-custom-colors)
+                          default-value)))
+         ;; Helper function to pick color based on variant and display 
capability
+         (pick-color (lambda (dark-gui dark-ter light-gui light-ter)
+                       (if (eq variant 'dark)
+                           (if (funcall true-color-p) dark-gui dark-ter)
+                         (if (funcall true-color-p) light-gui light-ter))))
+         (class '((class color) (min-colors 89)))
+         ;;                                                                    
  --- Dark  ---       --- Light ---
+         ;;                                                                    
  GUI       TER       GUI       TER
+         (act1          (funcall get-color 'act1 (funcall pick-color          
"#222226" "#121212" "#e7e5eb" "#d7dfff")))
+         (act2          (funcall get-color 'act2 (funcall pick-color          
"#5d4d7a" "#444444" "#d3d3e7" "#afafd7")))
+         (base          (funcall get-color 'base (funcall pick-color          
"#b2b2b2" "#b2b2b2" "#655370" "#5f5f87")))
+         (base-dim      (funcall get-color 'base-dim (funcall pick-color      
"#686868" "#585858" "#a094a2" "#afafd7")))
+         (bg1           (funcall get-color 'bg1 (funcall pick-color           
"#292b2e" "#262626" "#fbf8ef" "#ffffff")))
+         (bg2           (funcall get-color 'bg2 (funcall pick-color           
"#212026" "#1c1c1c" "#efeae9" "#e4e4e4")))
+         (bg3           (funcall get-color 'bg3 (funcall pick-color           
"#100a14" "#121212" "#e3dedd" "#d0d0d0")))
+         (bg4           (funcall get-color 'bg4 (funcall pick-color           
"#0a0814" "#080808" "#d2ceda" "#bcbcbc")))
+         (bg-alt        (funcall get-color 'bg-alt (funcall pick-color        
"#42444a" "#353535" "#efeae9" "#e4e4e4")))
+         (border        (funcall get-color 'border (funcall pick-color        
"#5d4d7a" "#111111" "#b3b9be" "#b3b9be")))
+         (cblk          (funcall get-color 'cblk (funcall pick-color          
"#cbc1d5" "#b2b2b2" "#655370" "#5f5f87")))
+         (cblk-bg       (funcall get-color 'cblk-bg (funcall pick-color       
"#2f2b33" "#262626" "#e8e3f0" "#ffffff")))
+         (cblk-ln       (funcall get-color 'cblk-ln (funcall pick-color       
"#827591" "#af5faf" "#9380b2" "#af5fdf")))
+         (cblk-ln-bg    (funcall get-color 'cblk-ln-bg (funcall pick-color    
"#373040" "#333333" "#ddd8eb" "#dfdfff")))
+         (cursor        (funcall get-color 'cursor (funcall pick-color        
"#e3dedd" "#d0d0d0" "#100a14" "#121212")))
+         (const         (funcall get-color 'const (funcall pick-color         
"#a45bad" "#d75fd7" "#4e3163" "#8700af")))
+         (comment       (funcall get-color 'comment (funcall pick-color       
"#2aa1ae" "#008787" "#2aa1ae" "#008787")))
+         (comment-light (funcall get-color 'comment-light (funcall pick-color 
"#2aa1ae" "#008787" "#a49da5" "#008787")))
+         (comment-bg    (funcall get-color 'comment-bg (funcall pick-color    
"#292e34" "#262626" "#ecf3ec" "#ffffff")))
+         (comp          (funcall get-color 'comp (funcall pick-color          
"#c56ec3" "#d75fd7" "#6c4173" "#8700af")))
+         (err           (funcall get-color 'err (funcall pick-color           
"#e0211d" "#e0211d" "#e0211d" "#e0211d")))
+         (func          (funcall get-color 'func (funcall pick-color          
"#bc6ec5" "#d75fd7" "#6c3163" "#8700af")))
+         (head1         (funcall get-color 'head1 (funcall pick-color         
"#4f97d7" "#268bd2" "#3a81c3" "#268bd2")))
+         (head1-bg      (funcall get-color 'head1-bg (funcall pick-color      
"#293239" "#262626" "#edf1ed" "#ffffff")))
+         (head2         (funcall get-color 'head2 (funcall pick-color         
"#2d9574" "#2aa198" "#2d9574" "#2aa198")))
+         (head2-bg      (funcall get-color 'head2-bg (funcall pick-color      
"#293235" "#262626" "#edf2e9" "#ffffff")))
+         (head3         (funcall get-color 'head3 (funcall pick-color         
"#67b11d" "#67b11d" "#67b11d" "#5faf00")))
+         (head3-bg      (funcall get-color 'head3-bg (funcall pick-color      
"#293235" "#262626" "#edf2e9" "#ffffff")))
+         (head4         (funcall get-color 'head4 (funcall pick-color         
"#b1951d" "#875f00" "#b1951d" "#875f00")))
+         (head4-bg      (funcall get-color 'head4-bg (funcall pick-color      
"#32322c" "#262626" "#f6f1e1" "#ffffff")))
+         (highlight     (funcall get-color 'highlight (funcall pick-color     
"#444155" "#444444" "#d3d3e7" "#d7d7ff")))
+         (highlight-dim (funcall get-color 'highlight-dim (funcall pick-color 
"#3b314d" "#444444" "#e7e7fc" "#d7d7ff")))
+         (keyword       (funcall get-color 'keyword (funcall pick-color       
"#4f97d7" "#268bd2" "#3a81c3" "#268bd2")))
+         (lnum          (funcall get-color 'lnum (funcall pick-color          
"#44505c" "#444444" "#a8a8bf" "#af87af")))
+         (mat           (funcall get-color 'mat (funcall pick-color           
"#86dc2f" "#86dc2f" "#ba2f59" "#af005f")))
+         (meta          (funcall get-color 'meta (funcall pick-color          
"#9f8766" "#af875f" "#da8b55" "#df5f5f")))
+         (str           (funcall get-color 'str (funcall pick-color           
"#2d9574" "#2aa198" "#2d9574" "#2aa198")))
+         (suc           (funcall get-color 'suc (funcall pick-color           
"#86dc2f" "#86dc2f" "#42ae2c" "#00af00")))
+         (ttip          (funcall get-color 'ttip (funcall pick-color          
"#9a9aba" "#888888" "#8c799f" "#5f5f87")))
+         (ttip-sl       (funcall get-color 'ttip-sl (funcall pick-color       
"#5e5079" "#333333" "#c8c6dd" "#afafff")))
+         (ttip-bg       (funcall get-color 'ttip-bg (funcall pick-color       
"#34323e" "#444444" "#e2e0ea" "#dfdfff")))
+         (type          (funcall get-color 'type (funcall pick-color          
"#ce537a" "#df005f" "#ba2f59" "#af005f")))
+         (var           (funcall get-color 'var (funcall pick-color           
"#7590db" "#8787d7" "#715ab1" "#af5fd7")))
+         (war           (funcall get-color 'war (funcall pick-color           
"#dc752f" "#dc752f" "#dc752f" "#dc752f")))
+         (aqua          (funcall get-color 'aqua (funcall pick-color          
"#2d9574" "#2aa198" "#2d9574" "#2aa198")))
+         (aqua-bg       (funcall get-color 'aqua-bg (funcall pick-color       
"#293235" "#262626" "#edf2e9" "#ffffff")))
+         (green         (funcall get-color 'green (funcall pick-color         
"#67b11d" "#67b11d" "#67b11d" "#5faf00")))
+         (green-bg      (funcall get-color 'green-bg (funcall pick-color      
"#293235" "#262626" "#edf2e9" "#ffffff")))
+         (green-bg-s    (funcall get-color 'green-bg-s (funcall pick-color    
"#29422d" "#262626" "#dae6d0" "#ffffff")))
+         (cyan          (funcall get-color 'cyan (funcall pick-color          
"#28def0" "#00ffff" "#21b8c7" "#008080")))
+         (red           (funcall get-color 'red (funcall pick-color           
"#f2241f" "#d70000" "#f2241f" "#d70008")))
+         (red-bg        (funcall get-color 'red-bg (funcall pick-color        
"#3c2a2c" "#262626" "#faede4" "#ffffff")))
+         (red-bg-s      (funcall get-color 'red-bg-s (funcall pick-color      
"#512e31" "#262626" "#eed9d2" "#ffffff")))
+         (blue          (funcall get-color 'blue (funcall pick-color          
"#4f97d7" "#268bd2" "#3a81c3" "#268bd2")))
+         (blue-bg       (funcall get-color 'blue-bg (funcall pick-color       
"#293239" "#262626" "#edf1ed" "#d7d7ff")))
+         (blue-bg-s     (funcall get-color 'blue-bg-s (funcall pick-color     
"#2d4252" "#262626" "#d1dcdf" "#d7d7ff")))
+         (magenta       (funcall get-color 'magenta (funcall pick-color       
"#a31db1" "#af00df" "#a31db1" "#800080")))
+         (yellow        (funcall get-color 'yellow (funcall pick-color        
"#b1951d" "#875f00" "#b1951d" "#875f00")))
+         (yellow-bg     (funcall get-color 'yellow-bg (funcall pick-color     
"#32322c" "#262626" "#f6f1e1" "#ffffff"))))
+
+
 
     (custom-theme-set-faces
      theme-name
@@ -1101,8 +1105,8 @@ to `auto', tags may not be properly aligned. "
      `(org-fontify-todo-headline nil)
 
 ;;;;; pdf-tools
-     `(pdf-view-midnight-colors '(,base . ,bg1)))
-    ))
+     `(pdf-view-midnight-colors '(,base . ,bg1))
+     )))
 
 
 ;;;###autoload

Reply via email to