branch: elpa/gptel commit 5cafffd19afcb4f6708af2d781446e8dc592af42 Author: Karthik Chikmagalur <karthikchikmaga...@gmail.com> Commit: Karthik Chikmagalur <karthikchikmaga...@gmail.com>
gptel: macro to create temp buffers (Emacs 27 compat) * gptel.el (gptel--temp-buffer): New macro for creating temp buffers for compatibility with Emacs 27. This is required since `generate-new-buffer' does not accept a second argument to inhibit buffer hooks in the new buffer. Can be safely removed after we drop support for Emacs 27.1. * gptel-rewrite.el (gptel--suffix-rewrite): Use `gptel--temp-buffer'. * gptel-org.el (gptel--stream-convert-markdown->org): Use `gptel--temp-buffer'. * gptel-curl.el (gptel-curl-get-response): Use `gptel--temp-buffer'. Also disable undo and buffer hooks in the process buffer for Curl. --- gptel-curl.el | 2 +- gptel-org.el | 4 ++-- gptel-rewrite.el | 4 ++-- gptel.el | 8 ++++++++ 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/gptel-curl.el b/gptel-curl.el index 425d25aeee..cd914ab16a 100644 --- a/gptel-curl.el +++ b/gptel-curl.el @@ -134,7 +134,7 @@ the response is inserted into the current buffer after point." (args (gptel-curl--get-args info token)) (stream (plist-get info :stream)) (process (apply #'start-process "gptel-curl" - (generate-new-buffer "*gptel-curl*") "curl" args))) + (gptel--temp-buffer " *gptel-curl*") "curl" args))) (when (memq system-type '(windows-nt ms-dos)) ;; Don't try to convert cr-lf to cr on Windows so that curl's "header size ;; in bytes" stays correct diff --git a/gptel-org.el b/gptel-org.el index eb4ded7693..dc4e74d855 100644 --- a/gptel-org.el +++ b/gptel-org.el @@ -617,8 +617,8 @@ START-MARKER is used to identify the corresponding process when cleaning up after." (letrec ((in-src-block nil) ;explicit nil to address BUG #183 (in-org-src-block nil) - (temp-buf ; NOTE: Don't use `generate-new-buffer' until we drop support for Emacs 27.1 (#724) - (get-buffer-create (generate-new-buffer-name " *gptel-temp*") t)) + (temp-buf ; NOTE: Switch to `generate-new-buffer' after we drop Emacs 27.1 + (gptel--temp-buffer " *gptel-temp*")) (start-pt (make-marker)) (ticks-total 0) ;MAYBE should we let-bind case-fold-search here? (cleanup-fn diff --git a/gptel-rewrite.el b/gptel-rewrite.el index 85159e7e4e..c4aade13da 100644 --- a/gptel-rewrite.el +++ b/gptel-rewrite.el @@ -632,8 +632,8 @@ generated from functions." (make-overlay (region-beginning) (region-end) nil t)))) (overlay-put ov 'category 'gptel) (overlay-put ov 'evaporate t) - ;; NOTE: Don't use `generate-new-buffer' until we drop support for Emacs 27.1 (#724) - (cons ov (get-buffer-create (generate-new-buffer-name " *gptel-rewrite*") t))) + ;; NOTE: Switch to `generate-new-buffer' after we drop Emacs 27.1 (#724) + (cons ov (gptel--temp-buffer " *gptel-rewrite*"))) :callback #'gptel--rewrite-callback) ;; Move back so that the cursor is on the overlay when done. (unless (get-char-property (point) 'gptel-rewrite) diff --git a/gptel.el b/gptel.el index ff9c0cf2d1..23e34cd6ae 100644 --- a/gptel.el +++ b/gptel.el @@ -974,6 +974,14 @@ If positions START and END are provided, insert that part of BUF first." (let ((major-mode (buffer-local-value 'major-mode ,buf))) ,@body))) +(defmacro gptel--temp-buffer (buf) + "Generate a temp buffer BUF. + +Compatibility macro for Emacs 27.1." + (if (< emacs-major-version 28) + `(generate-new-buffer ,buf) + `(generate-new-buffer ,buf t))) + (defun gptel-prompt-prefix-string () "Prefix before user prompts in `gptel-mode'." (or (alist-get major-mode gptel-prompt-prefix-alist) ""))