Function: gptel--transform-apply-preset
gptel--transform-apply-preset is a natively compiled function defined
in gptel.el.
Signature
(gptel--transform-apply-preset FSM)
Documentation
Apply a gptel preset to the buffer depending on the prompt.
If the last user prompt includes @foo, the preset foo is applied. Before applying the preset, "@foo" is removed from the prompt and point is placed at its position.
Source Code
;; Defined in /nix/store/q3r7g81pvghw7a523kjk2k2zih3pfk8z-emacs-packages-deps/share/emacs/site-lisp/elpa/gptel-20261002.545/gptel.el
;;;; Presets in-buffer UI
(defun gptel--transform-apply-preset (_fsm)
"Apply a gptel preset to the buffer depending on the prompt.
If the last user prompt includes @foo, the preset foo is applied.
Before applying the preset, \"@foo\" is removed from the prompt and
point is placed at its position."
(when gptel--known-presets
(text-property-search-backward 'gptel nil t)
(while (re-search-forward "@\\([^[:space:]]+\\)\\_>" nil t)
;; The following convoluted check is because re-search is much faster if
;; the search pattern begins with a non-whitespace char.
(when (or (= (match-beginning 0) (point-min))
(memq (char-syntax (char-before (match-beginning 0))) '(32 62)))
(when-let* ((name (match-string 1))
(preset (or (gptel-get-preset (intern-soft name))
(gptel-get-preset name))))
(delete-region (match-beginning 0) (match-end 0))
;; Point must be after @foo when the preset is applied to allow for
;; more advanced transformations.
(gptel--apply-preset preset
(lambda (sym val)
(set (make-local-variable sym) val))))))))