Function: gptel-with-preset
gptel-with-preset is a macro defined in gptel.el.
Signature
(gptel-with-preset NAME &rest BODY)
Documentation
Run BODY with gptel preset NAME applied.
This macro can be used to create gptel-request command with settings
from a gptel preset applied.
NAME is the name of a preset, or a spec (plist) of the form
(:KEY1 VAL1 :KEY2 VAL2 ...). It must be quoted.
Source Code
;; Defined in /nix/store/q3r7g81pvghw7a523kjk2k2zih3pfk8z-emacs-packages-deps/share/emacs/site-lisp/elpa/gptel-20261002.545/gptel.el
;; This is identical to `cl-progv', only we let-bind symbols SYM from the preset
;; to their current values instead of evaluating the values explicitly. (#1005)
(defmacro gptel-with-preset (name &rest body)
"Run BODY with gptel preset NAME applied.
This macro can be used to create `gptel-request' command with settings
from a gptel preset applied.
NAME is the name of a preset, or a spec (plist) of the form
(:KEY1 VAL1 :KEY2 VAL2 ...). It must be quoted."
(declare (indent 1))
(let ((syms (make-symbol "syms"))
(binds (make-symbol "binds"))
(bodyfun (make-symbol "body")))
;; Let-bind symbols that we want to modify with the presets. Also include
;; `gptel--preset' in this list as we don't want to change its value outside
;; of this macro's scope.
`(let* ((,syms (cons 'gptel--preset (gptel--preset-syms ,name)))
(,bodyfun (lambda () (gptel--apply-preset ,name) ,@body))
(,binds nil))
(while ,syms (push (list (car ,syms) (pop ,syms)) ,binds))
(eval (list 'let (nreverse ,binds) (list 'funcall (list 'quote ,bodyfun)))))))