summaryrefslogtreecommitdiff
path: root/emacs/local/solarized-theme.el
blob: ce77f65949c02ca5c3e0552941463d53fc87a738 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
;; solarized-theme.el --- Solarized custom theme  -*- lexical-binding: t; -*-

(require 'solarized-definitions
         (locate-file "solarized-definitions.el" custom-theme-load-path
                      '("c" "")))

(deftheme solarized solarized-description)

(apply #'custom-theme-set-faces 'solarized (solarized-color-definitions))

(custom-theme-set-variables
 'solarized
 ;; This is obsolete, but something might still be referencing it.
 `(ansi-color-names-vector
   ,(apply #'vector
           (mapcar (lambda (color-name)
                     (nth 1 (assoc color-name solarized-colors)))
                   '(base02 red green yellow blue magenta cyan base2)))))

(cl-defun solarized-update-background-mode
    (appearance &optional (frames (frame-list)))
  "Set the APPEARANCE of all frames to either 'light or 'dark.
This is not specific to Solarized – it will update the appearance of any theme
that observes the background characteristic."
  (setq frame-background-mode appearance)
  (mapc #'frame-set-background-mode frames)
  ;; Supposedly #'frame-set-background-mode updates the faces, but it doesn’t
  ;; seem to actually., so re-enable all the themes.
  (mapc #'enable-theme (reverse custom-enabled-themes))
  ;; For some reason, ‘enable-theme’ (or maybe ‘solarized’?) is resetting the
  ;; ‘frame-background-mode’, so reset it here.
  (setq frame-background-mode appearance))

(defun solarized-toggle-background-mode ()
  "Toggle between light and dark background modes.
This is not specific to Solarized – it will update the appearance of any theme
that observes the background characteristic."
  (interactive)
  (let ((new-mode (pcase frame-background-mode
                    ('dark 'light)
                    (_ 'dark))))
    (solarized-update-background-mode new-mode)))

;;;###autoload
(when load-file-name
  (add-to-list 'custom-theme-load-path
               (file-name-as-directory (file-name-directory load-file-name))))

(provide-theme 'solarized)
;;; solarized-theme.el ends here