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.