gptel: Set window when running post-response hook
* gptel.el (gptel--insert-response): Moving point in a buffer does not move window-point in a window displaying that buffer if the window is not selected (#269). So select the gptel response window explicitly (if possible) when running `gptel-post-response-functions`. NOTE: Instead of selecting the window before running the hook, We could run `set-window-point` in the window after running it. Since the hook can have any kind of behavior (smooth-scrolling for instance) we want it to play out interactively. * gptel-curl.el (gptel--curl-stream-cleanup): Ditto.
This commit is contained in:
parent
26326c302e
commit
81bb467104
2 changed files with 17 additions and 6 deletions
|
@ -238,10 +238,16 @@ PROCESS and _STATUS are process parameters."
|
|||
(when gptel-mode
|
||||
(gptel--update-status
|
||||
(format " Response Error: %s" http-msg) 'error))))
|
||||
(with-current-buffer gptel-buffer
|
||||
(run-hook-with-args 'gptel-post-response-functions
|
||||
(marker-position start-marker)
|
||||
(marker-position (or tracking-marker start-marker)))))
|
||||
;; Run hook in visible window to set window-point, BUG #269
|
||||
(if-let ((gptel-window (get-buffer-window gptel-buffer 'visible)))
|
||||
(with-selected-window gptel-window
|
||||
(run-hook-with-args 'gptel-post-response-functions
|
||||
(marker-position start-marker)
|
||||
(marker-position (or tracking-marker start-marker))))
|
||||
(with-current-buffer gptel-buffer
|
||||
(run-hook-with-args 'gptel-post-response-functions
|
||||
(marker-position start-marker)
|
||||
(marker-position (or tracking-marker start-marker))))))
|
||||
(setf (alist-get process gptel-curl--process-alist nil 'remove) nil)
|
||||
(kill-buffer proc-buf)))
|
||||
|
||||
|
|
9
gptel.el
9
gptel.el
|
@ -1047,8 +1047,13 @@ See `gptel--url-get-response' for details."
|
|||
(gptel--update-status
|
||||
(format " Response Error: %s" status-str) 'error)
|
||||
(message "gptel response error: (%s) %s"
|
||||
status-str (plist-get info :error)))
|
||||
(run-hook-with-args 'gptel-post-response-functions response-beg response-end))))
|
||||
status-str (plist-get info :error))))
|
||||
;; Run hook in visible window to set window-point, BUG #269
|
||||
(if-let ((gptel-window (get-buffer-window gptel-buffer 'visible)))
|
||||
(with-selected-window gptel-window
|
||||
(run-hook-with-args 'gptel-post-response-functions response-beg response-end))
|
||||
(with-current-buffer gptel-buffer
|
||||
(run-hook-with-args 'gptel-post-response-functions response-beg response-end)))))
|
||||
|
||||
(defun gptel-set-topic ()
|
||||
"Set a topic and limit this conversation to the current heading.
|
||||
|
|
Loading…
Add table
Reference in a new issue