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
|
(when gptel-mode
|
||||||
(gptel--update-status
|
(gptel--update-status
|
||||||
(format " Response Error: %s" http-msg) 'error))))
|
(format " Response Error: %s" http-msg) '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
|
||||||
|
(marker-position start-marker)
|
||||||
|
(marker-position (or tracking-marker start-marker))))
|
||||||
(with-current-buffer gptel-buffer
|
(with-current-buffer gptel-buffer
|
||||||
(run-hook-with-args 'gptel-post-response-functions
|
(run-hook-with-args 'gptel-post-response-functions
|
||||||
(marker-position start-marker)
|
(marker-position start-marker)
|
||||||
(marker-position (or tracking-marker start-marker)))))
|
(marker-position (or tracking-marker start-marker))))))
|
||||||
(setf (alist-get process gptel-curl--process-alist nil 'remove) nil)
|
(setf (alist-get process gptel-curl--process-alist nil 'remove) nil)
|
||||||
(kill-buffer proc-buf)))
|
(kill-buffer proc-buf)))
|
||||||
|
|
||||||
|
|
9
gptel.el
9
gptel.el
|
@ -1047,8 +1047,13 @@ See `gptel--url-get-response' for details."
|
||||||
(gptel--update-status
|
(gptel--update-status
|
||||||
(format " Response Error: %s" status-str) 'error)
|
(format " Response Error: %s" status-str) 'error)
|
||||||
(message "gptel response error: (%s) %s"
|
(message "gptel response error: (%s) %s"
|
||||||
status-str (plist-get info :error)))
|
status-str (plist-get info :error))))
|
||||||
(run-hook-with-args 'gptel-post-response-functions response-beg response-end))))
|
;; 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 ()
|
(defun gptel-set-topic ()
|
||||||
"Set a topic and limit this conversation to the current heading.
|
"Set a topic and limit this conversation to the current heading.
|
||||||
|
|
Loading…
Add table
Reference in a new issue