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

Reply via email to