branch: elpa/gptel commit 8e01159537c06630258ac87e9a464a0cd959683b Author: Karthik Chikmagalur <karthikchikmaga...@gmail.com> Commit: Karthik Chikmagalur <karthikchikmaga...@gmail.com>
gptel: Make with-buffer-copy comprehensive * gptel.el (gptel--with-buffer-copy): In preparation for gptel's switch to fully buffer-oriented prompt preparation (needed for augmentation), make `gptel--with-buffer-copy' - copy all the required state into the prompt preparation buffer. - Keep the buffer alive for current for augmentation and parsing instead of using `with-temp-buffer'. The latter means that the prompt preparation buffer is never cleaned up after a request, and gptel is thus buggy as of this commit. This will be rectified next. --- gptel.el | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/gptel.el b/gptel.el index f254559aff..7ec4bd27b1 100644 --- a/gptel.el +++ b/gptel.el @@ -1019,16 +1019,22 @@ Note: This will move the cursor." If positions START and END are provided, insert that part of BUF first." (declare (indent 3)) - `(with-temp-buffer - (dolist (sym '( gptel-backend gptel--system-message gptel-model - gptel-mode gptel-track-response gptel-track-media - gptel-prompt-filter-hook)) - (set (make-local-variable sym) - (buffer-local-value sym ,buf))) - ,(when (and start end) - `(insert-buffer-substring ,buf ,start ,end)) - (let ((major-mode (buffer-local-value 'major-mode ,buf))) - ,@body))) + (let ((temp-buffer (make-symbol "temp-buffer"))) + `(let ((,temp-buffer (gptel--temp-buffer " *gptel-prompt*"))) + (with-current-buffer ,temp-buffer + (dolist (sym '( gptel-backend gptel--system-message gptel-model + gptel-mode gptel-track-response gptel-track-media + gptel-use-tools gptel-tools gptel-use-curl + gptel-prompt-filter-hook gptel-use-context + gptel--num-messages-to-send gptel-stream + gptel-include-reasoning + gptel-temperature gptel-max-tokens gptel-cache)) + (set (make-local-variable sym) + (buffer-local-value sym ,buf))) + ,(when (and start end) + `(insert-buffer-substring ,buf ,start ,end)) + (setq major-mode (buffer-local-value 'major-mode ,buf)) + ,@body)))) (defmacro gptel--temp-buffer (buf) "Generate a temp buffer BUF.