branch: elpa/gptel commit 59ed891293f3d276551dbab9359f25dcb6561cd2 Author: Karthik Chikmagalur <karthikchikmaga...@gmail.com> Commit: Karthik Chikmagalur <karthikchikmaga...@gmail.com>
gptel: Handle rewrite-directive when applying preset * gptel.el (gptel--apply-preset): Handle `gptel--rewrite-directive' when applying a preset. While it is naturally covered as `:rewrite-directive' because of how preset keywords are interpreted, it can now be specified as a symbol referencing `gptel-directives', same as the `:system' and `:system-message' keys. --- gptel.el | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/gptel.el b/gptel.el index b8a4e3645a..1ed232f068 100644 --- a/gptel.el +++ b/gptel.el @@ -3367,6 +3367,7 @@ kill-ring." (message "Preset %s saved. (Lisp expression for preset saved to kill-ring)" (propertize (symbol-name name) 'face 'highlight)))) +(defvar gptel--rewrite-directive) (defun gptel--apply-preset (preset &optional setter) "Apply gptel PRESET with SETTER. @@ -3389,13 +3390,15 @@ example) apply the preset buffer-locally." (lambda (key val) (pcase key ((or :parents :description) nil) - (:system - (if (and (symbolp val) (not (functionp val))) - (if-let* ((directive (alist-get val gptel-directives))) - (funcall setter 'gptel--system-message directive) - (user-error "gptel preset \"%s\": Cannot find directive %s" - (car preset) val)) - (funcall setter 'gptel--system-message val))) + ((or :system :system-message :rewrite-directive) + (let ((sym (if (eq key :rewrite-directive) + 'gptel--rewrite-directive 'gptel--system-message))) + (if (and (symbolp val) (not (functionp val))) + (if-let* ((directive (alist-get val gptel-directives))) + (funcall setter sym directive) + (user-error "gptel preset \"%s\": Cannot find directive %s" + (car preset) val)) + (funcall setter sym val)))) (:backend (setq val (cl-etypecase val (gptel-backend val)