Function: gptel--handle-error

gptel--handle-error is a natively compiled function defined in gptel.el.

Signature

(gptel--handle-error FSM)

Documentation

Check for errors in request state FSM.

Perform UI updates and run post-response hooks.

Source Code

;; Defined in /nix/store/q3r7g81pvghw7a523kjk2k2zih3pfk8z-emacs-packages-deps/share/emacs/site-lisp/elpa/gptel-20261002.545/gptel.el
(defun gptel--handle-error (fsm)
  "Check for errors in request state FSM.

Perform UI updates and run post-response hooks."
  (when-let* ((info (gptel-fsm-info fsm))
              (error-data (plist-get info :error)))
    (let* ((status (plist-get info :status))
           (gptel-buffer (plist-get info :buffer))
           (start-marker (plist-get info :position))
           (tracking-marker (or (plist-get info :tracking-marker)
                                start-marker))
           (backend-name
            (gptel-backend-name
             (buffer-local-value 'gptel-backend gptel-buffer))))
      (if (stringp error-data)
          (message "%s error: (%s) %s" backend-name status (string-trim error-data))
        (when-let* ((error-type (plist-get error-data :type)))
          (setq status (concat "("  status ") "
                               (string-trim (gptel--to-string error-type)))))
        (when-let* ((error-msg (plist-get error-data :message)))
          (message "%s error: (%s) %s" backend-name status
                   (string-trim (gptel--to-string error-msg)))))
      (if-let* ((gptel-window (get-buffer-window gptel-buffer 'visible)))
          (with-selected-window gptel-window
            (mapc (lambda (f) (funcall f info)) (plist-get info :post))
            (run-hook-with-args
             'gptel-post-response-functions
             (marker-position start-marker) (marker-position tracking-marker)))
        (with-current-buffer gptel-buffer
          (mapc (lambda (f) (funcall f info)) (plist-get info :post))
          (run-hook-with-args
           'gptel-post-response-functions
           (marker-position start-marker) (marker-position tracking-marker))))
      (with-current-buffer gptel-buffer
        (when gptel-mode
          (gptel--update-status (format " Error: %s" status) 'error)
          (gptel--update-token-usage (plist-get info :tokens)
                                     (plist-get info :tokens-full)))))))