-
-
Notifications
You must be signed in to change notification settings - Fork 202
/
solarized-theme.el
50 lines (42 loc) · 1.98 KB
/
solarized-theme.el
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