branch: elpa/gptel
commit 69b5348651d12613939a14096bbcee17a46caec3
Author: Karthik Chikmagalur <karthikchikmaga...@gmail.com>
Commit: Karthik Chikmagalur <karthikchikmaga...@gmail.com>

    gptel: Change preset :after function to :post, add :pre
    
    * gptel.el (gptel-make-preset): Change `:after' to `:post' as a
    recognized keyword in gptel presets.  It's value is expected to be
    a function that runs after the preset is applied.
    
    Also add a `:pre' key for a function to run before a preset is
    applied.
    
    (gptel--apply-preset): Run the `:pre' and `:post' functions before
    and after applying a preset, respectively.
    
    * gptel-transient.el (gptel--preset-mismatch-p): Adjust for
    `:pre' and `:post'.
---
 gptel-transient.el |  2 +-
 gptel.el           | 13 +++++--------
 2 files changed, 6 insertions(+), 9 deletions(-)

diff --git a/gptel-transient.el b/gptel-transient.el
index 67ecd3c70b..75481ce5e5 100644
--- a/gptel-transient.el
+++ b/gptel-transient.el
@@ -86,7 +86,7 @@ For internal use only.")
       (while elm
         (setq key (pop elm) val (pop elm))
         (cond
-         ((memq key '(:description :parents :after)) 'nil)
+         ((memq key '(:description :parents)) 'nil)
          ((eq key :system)
           (or (equal gptel--system-message val)
               (and-let* (((symbolp val))
diff --git a/gptel.el b/gptel.el
index e94147fd84..3ad6417ccd 100644
--- a/gptel.el
+++ b/gptel.el
@@ -3337,8 +3337,8 @@ preset.
 PARENTS is a preset name (or list of preset names) to apply before this
 one.
 
-AFTER is a function to run after the preset is applied.  It takes no
-arguments.
+PRE and POST are functions to run before and after the preset is
+applied.  They take no arguments.
 
 BACKEND is the gptel-backend to set, or its name (like \"ChatGPT\").
 
@@ -3419,12 +3419,13 @@ example) apply the preset buffer-locally."
                                 preset))))
       (setq preset (cons preset spec))))
   (unless setter (setq setter #'set))
+  (when-let* ((func (plist-get (cdr preset) :pre))) (funcall func))
   (when-let* ((parents (plist-get (cdr preset) :parents)))
     (mapc #'gptel--apply-preset (ensure-list parents)))
   (map-do
    (lambda (key val)
      (pcase key
-       ((or :parents :description :after) nil)
+       ((or :parents :description :pre :post) nil)
        ((or :system :system-message :rewrite-directive)
         (let ((sym (if (eq key :rewrite-directive)
                        'gptel--rewrite-directive 'gptel--system-message)))
@@ -3465,11 +3466,7 @@ example) apply the preset buffer-locally."
            (format "gptel preset \"%s\": setting for %s not found, ignoring."
                    (car preset) key)))))
    (cdr preset))
-  (when-let* ((func (plist-get (cdr preset) :after)))
-    (if (functionp func) (funcall func)
-      (display-warning '(gptel presets)
-                       (format "gptel preset \"%s\": %S is not a function, 
ignoring."
-                               (car preset) func)))))
+  (when-let* ((func (plist-get (cdr preset) :post))) (funcall func)))
 
 (defun gptel--preset-syms (preset)
   "Return a list of gptel variables (symbols) set by PRESET.

Reply via email to