Function: gptel--handle-pre-insert
gptel--handle-pre-insert is a natively compiled function defined in
gptel.el.
Signature
(gptel--handle-pre-insert FSM)
Documentation
Tasks before inserting the LLM response for state FSM.
Handle read-only buffers and run pre-response hooks (but only if the request succeeded).
Source Code
;; Defined in /nix/store/q3r7g81pvghw7a523kjk2k2zih3pfk8z-emacs-packages-deps/share/emacs/site-lisp/elpa/gptel-20261002.545/gptel.el
;;;; State machine handlers
;; The next few functions are default state handlers for gptel-send, see
;; `gptel-send--handlers'.
(defun gptel--handle-pre-insert (fsm)
"Tasks before inserting the LLM response for state FSM.
Handle read-only buffers and run pre-response hooks (but only if
the request succeeded)."
(let* ((info (gptel-fsm-info fsm))
(start-marker (plist-get info :position)))
(when (memq (plist-get info :callback)
'(gptel--insert-response gptel-curl--stream-insert-response))
(with-current-buffer (marker-buffer start-marker)
(when (or buffer-read-only (get-char-property start-marker 'read-only))
(cond
((derived-mode-p 'vterm-mode)
(require 'gptel-integrations)
(gptel--vterm-pre-insert info))
(t
(message "Buffer is read only, displaying reply in buffer \"*LLM response*\"")
(display-buffer
(with-current-buffer (get-buffer-create "*LLM response*")
(visual-line-mode 1)
(goto-char (point-max))
(move-marker start-marker (point) (current-buffer))
(current-buffer))
'((display-buffer-reuse-window
display-buffer-pop-up-window)
(reusable-frames . visible))))))))
(with-current-buffer (marker-buffer start-marker)
(when (plist-get info :stream)
(gptel--update-status " Typing..." 'success))
(save-excursion
(goto-char start-marker)
(when (and (member (plist-get info :http-status) '("200" "100"))
gptel-pre-response-hook)
(run-hooks 'gptel-pre-response-hook))))))