[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 59e1867: Add 'require-theme' function
From: |
Basil L. Contovounesios |
Subject: |
master 59e1867: Add 'require-theme' function |
Date: |
Mon, 1 Mar 2021 14:56:11 -0500 (EST) |
branch: master
commit 59e1867a1f2b6938cdabac8e3f52acc9e61e9e32
Author: Protesilaos Stavrou <info@protesilaos.com>
Commit: Basil L. Contovounesios <contovob@tcd.ie>
Add 'require-theme' function
* etc/NEWS: Document new function.
* lisp/custom.el (require-theme): Add function.
This follows from the discussion on bug#45068 where it became apparent
that there was no equivalent mechanism to 'require' that read through
the 'custom-theme-load-path'.
---
etc/NEWS | 6 ++++++
lisp/custom.el | 24 ++++++++++++++++++++++++
2 files changed, 30 insertions(+)
diff --git a/etc/NEWS b/etc/NEWS
index 3db2761..d01b532 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -2506,6 +2506,12 @@ region's (or buffer's) end.
This function can be used by modes to add elements to the
'choice' customization type of a variable.
+---
+** New function 'require-theme'.
+This function is used to load a theme or library stored in the
+'custom-theme-load-path'. It is intended to work as a substitute for
+'require' in those cases where that cannot be used.
+
+++
** New function 'file-modes-number-to-symbolic' to convert a numeric
file mode specification into symbolic form.
diff --git a/lisp/custom.el b/lisp/custom.el
index 8338107..35ac4d8 100644
--- a/lisp/custom.el
+++ b/lisp/custom.el
@@ -1200,6 +1200,30 @@ property `theme-feature' (which is usually a symbol
created by
(custom-check-theme theme)
(provide (get theme 'theme-feature)))
+(defun require-theme (theme &optional path)
+ "Load THEME stored in `custom-theme-load-path'.
+
+THEME is a symbol that corresponds to the file name without its file
+type extension. That is assumed to be either '.el' or '.elc'.
+
+When THEME is an element of `custom-available-themes', load it and ask
+for confirmation if it is not considered safe by `custom-safe-themes'.
+Otherwise load the file indicated by THEME, if present. In the latter
+case, the file is intended to work as the basis of a theme declared
+with `deftheme'.
+
+If optional PATH is non-nil, it should be a list of directories
+to search for THEME in, instead of `custom-theme-load-path'.
+PATH should have the same form as `load-path' or `exec-path'."
+ (cond
+ ((memq theme (custom-available-themes))
+ (load-theme theme))
+ ((let* ((dirs (or path (custom-theme--load-path)))
+ (file (unless (featurep theme)
+ (locate-file (symbol-name theme) dirs '(".el" ".elc")))))
+ (when file
+ (load-file file))))))
+
(defcustom custom-safe-themes '(default)
"Themes that are considered safe to load.
If the value is a list, each element should be either the SHA-256
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master 59e1867: Add 'require-theme' function,
Basil L. Contovounesios <=