branch: elpa/gptel
commit c3d5d7f758b8fbb071abbd18d599d1eacb0f2fbd
Author: Steven Allen <[email protected]>
Commit: Karthik Chikmagalur <[email protected]>
gptel: Preserve gptel--preset when applying parent presets
* gptel.el (gptel--apply-preset): When applying a preset that has
a parent preset, `gptel--preset' is set to the name of the last
parent applied instead of the preset itself. Fix by applying the
parent as a spec (plist) instead of as a symbol.
---
gptel.el | 21 ++++++++++++---------
1 file changed, 12 insertions(+), 9 deletions(-)
diff --git a/gptel.el b/gptel.el
index 557efb65f7..5be09e7757 100644
--- a/gptel.el
+++ b/gptel.el
@@ -2572,15 +2572,18 @@ two arguments, the symbol being set and the value to
set it to. It
defaults to `set', and can be set to a different function to (for
example) apply the preset buffer-locally."
(unless setter (setq setter #'set))
- (when (memq (type-of preset) '(string symbol))
- (let ((spec (or (gptel-get-preset preset)
- (user-error "gptel preset \"%s\": Cannot find preset"
- preset))))
- (funcall setter 'gptel--preset preset)
- (setq preset spec)))
- (when-let* ((func (plist-get preset :pre))) (funcall func))
- (when-let* ((parents (plist-get preset :parents)))
- (mapc (lambda (parent) (gptel--apply-preset parent setter)) (ensure-list
parents)))
+ (cl-flet ((get-preset (preset)
+ (or (gptel-get-preset preset)
+ (user-error "gptel preset \"%s\": Cannot find preset"
+ preset))))
+ (when (memq (type-of preset) '(string symbol))
+ (let ((spec (get-preset preset)))
+ (funcall setter 'gptel--preset preset)
+ (setq preset spec)))
+ (when-let* ((func (plist-get preset :pre))) (funcall func))
+ (when-let* ((parents (plist-get preset :parents)))
+ (mapc (lambda (parent) (gptel--apply-preset (get-preset parent) setter))
+ (ensure-list parents))))
(map-do
(lambda (key val)
(pcase key