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) ""))

Reply via email to