summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Zlatanov <tzz@lifelogs.com>2021-02-06 10:16:10 +0000
committerTed Zlatanov <tzz@lifelogs.com>2021-02-06 10:46:00 +0000
commit2b9536f242ab2c408b9e87a04c1e6aad3596a073 (patch)
tree6b6457873ef6db4d878ea60a35273f53727f7e5f
parentc425e67a19526a0bda7bf52cdffde600c1696e01 (diff)
downloademacs-2b9536f242.tar.gz
Add use-package-use-theme and avoid missing theme errors
-rw-r--r--lisp/use-package/use-package-core.el47
-rw-r--r--test/lisp/use-package/use-package-tests.el8
2 files changed, 43 insertions, 12 deletions
diff --git a/lisp/use-package/use-package-core.el b/lisp/use-package/use-package-core.el
index 72e080001b2..28bc5a50ed0 100644
--- a/lisp/use-package/use-package-core.el
+++ b/lisp/use-package/use-package-core.el
@@ -135,6 +135,13 @@ arguments will be ignored in the `use-package' expansion."
:type 'boolean
:group 'use-package)
+(defcustom use-package-use-theme t
+ "If non-nil, use a custom theme to avoid saving :custom
+variables twice (once in the Custom file, once in the use-package
+call)."
+ :type 'boolean
+ :group 'use-package)
+
(defcustom use-package-verbose nil
"Whether to report about loading and configuration details.
If you customize this, then you should require the `use-package'
@@ -1397,18 +1404,34 @@ no keyword implies `:all'."
(defun use-package-handler/:custom (name _keyword args rest state)
"Generate use-package custom keyword code."
(use-package-concat
- `((let ((custom--inhibit-theme-enable nil))
- (custom-theme-set-variables
- 'use-package
- ,@(mapcar
- #'(lambda (def)
- (let ((variable (nth 0 def))
- (value (nth 1 def))
- (comment (nth 2 def)))
- (unless (and comment (stringp comment))
- (setq comment (format "Customized with use-package %s" name)))
- `'(,variable ,value nil () ,comment)))
- args))))
+ (if (bound-and-true-p use-package-use-theme)
+ `((let ((custom--inhibit-theme-enable nil))
+ ;; Declare the theme here so use-package can be required inside
+ ;; eval-and-compile without warnings about unknown theme.
+ (unless (memq 'use-package custom-known-themes)
+ (deftheme use-package)
+ (enable-theme 'use-package)
+ (setq custom-enabled-themes (remq 'use-package custom-enabled-themes)))
+ (custom-theme-set-variables
+ 'use-package
+ ,@(mapcar
+ #'(lambda (def)
+ (let ((variable (nth 0 def))
+ (value (nth 1 def))
+ (comment (nth 2 def)))
+ (unless (and comment (stringp comment))
+ (setq comment (format "Customized with use-package %s" name)))
+ `'(,variable ,value nil () ,comment)))
+ args))))
+ (mapcar
+ #'(lambda (def)
+ (let ((variable (nth 0 def))
+ (value (nth 1 def))
+ (comment (nth 2 def)))
+ (unless (and comment (stringp comment))
+ (setq comment (format "Customized with use-package %s" name)))
+ `(customize-set-variable (quote ,variable) ,value ,comment)))
+ args))
(use-package-process-keywords name rest state)))
;;;; :custom-face
diff --git a/test/lisp/use-package/use-package-tests.el b/test/lisp/use-package/use-package-tests.el
index a68491cfb7b..3825aa36487 100644
--- a/test/lisp/use-package/use-package-tests.el
+++ b/test/lisp/use-package/use-package-tests.el
@@ -1136,6 +1136,10 @@
`(progn
(let
((custom--inhibit-theme-enable nil))
+ (unless (memq 'use-package custom-known-themes)
+ (deftheme use-package)
+ (enable-theme 'use-package)
+ (setq custom-enabled-themes (remq 'use-package custom-enabled-themes)))
(custom-theme-set-variables 'use-package
'(foo bar nil nil "Customized with use-package foo")))
(require 'foo nil nil))))
@@ -1146,6 +1150,10 @@
`(progn
(let
((custom--inhibit-theme-enable nil))
+ (unless (memq 'use-package custom-known-themes)
+ (deftheme use-package)
+ (enable-theme 'use-package)
+ (setq custom-enabled-themes (remq 'use-package custom-enabled-themes)))
(custom-theme-set-variables 'use-package
'(foo bar nil nil "commented")))
(require 'foo nil nil))))