From a43f5ac5fa5dbd839f16beef5d9d6bb38fe7cf1b Mon Sep 17 00:00:00 2001 From: Karthik Chikmagalur Date: Thu, 6 Apr 2023 16:35:51 -0700 Subject: [PATCH] gptel: Rename stream-related vars and defuns * gptel.el (gptel--convert-playback-markdown->org, gptel--request-data, gptel-playback): - `gptel-playback' is now obsolete, use `gptel-stream' instead. - `gptel--convert-playback-markdown->org': rename to `gptel--stream-convert-markdown->org' * gptel-curl.el (gptel-curl--filter, gptel-curl-get-response): - `gptel--insert-response-stream': rename to `gptel-curl--stream-insert-response' - `gptel-curl--cleanup-stream': rename to `gptel-curl--stream-cleanup' - `gptel-curl--filter': rename to `gptel-curl--stream-filter' --- gptel-curl.el | 18 +++++++++--------- gptel.el | 12 ++++++++---- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/gptel-curl.el b/gptel-curl.el index 7ba5331..8136156 100644 --- a/gptel-curl.el +++ b/gptel-curl.el @@ -83,22 +83,22 @@ the response is inserted into the current buffer after point." (setf (alist-get process gptel-curl--process-alist) (nconc (list :token token :callback (or callback - (if gptel-playback - #'gptel--insert-response-stream + (if gptel-stream + #'gptel-curl--stream-insert-response #'gptel--insert-response)) :transformer (when (or (eq gptel-default-mode 'org-mode) (eq (buffer-local-value 'major-mode (plist-get info :gptel-buffer)) 'org-mode)) - (gptel--convert-playback-markdown->org))) + (gptel--stream-convert-markdown->org))) info)) - (if gptel-playback - (progn (set-process-sentinel process #'gptel-curl--cleanup-stream) - (set-process-filter process #'gptel-curl--filter)) + (if gptel-stream + (progn (set-process-sentinel process #'gptel-curl--stream-cleanup) + (set-process-filter process #'gptel-curl--stream-filter)) (set-process-sentinel process #'gptel-curl--sentinel))))) -(defun gptel-curl--cleanup-stream (process status) +(defun gptel-curl--stream-cleanup (process status) "Process sentinel for GPTel curl requests. PROCESS and STATUS are process parameters." @@ -152,7 +152,7 @@ See `gptel--url-get-response' for details." (gptel--update-header-line (format " Response Error: %s" status-str) 'error)))) -(defun gptel-curl--filter (process output) +(defun gptel-curl--stream-filter (process output) (let* ((content-strs) (proc-info (alist-get process gptel-curl--process-alist))) (with-current-buffer (process-buffer process) @@ -182,7 +182,7 @@ See `gptel--url-get-response' for details." (http-status (plist-get proc-info :http-status))) ;; Find data chunk(s) and run callback (funcall (or (plist-get proc-info :callback) - #'gptel--insert-response-stream) + #'gptel-curl--stream-insert-response) (if (equal http-status "200") (let* ((json-object-type 'plist) (response) (content-str)) diff --git a/gptel.el b/gptel.el index 1579e7f..72e2a65 100644 --- a/gptel.el +++ b/gptel.el @@ -76,14 +76,18 @@ key (more secure)." (string :tag "API key") (function :tag "Function that returns the API key"))) -(defcustom gptel-playback nil - "Whether responses from ChatGPT be played back in chunks. +(defcustom gptel-stream nil + "Whether responses from ChatGPT be played back as they are received. -When set to nil, it is inserted all at once. +This option is ignored unless Curl is in use (see `gptel-use-curl'). + +When set to nil, Emacs waits for the full response and inserts it +all at once. This wait is asynchronous. 'tis a bit silly." :group 'gptel :type 'boolean) +(make-obsolete-variable 'gptel-playback 'gptel-stream "0.3.0") (defcustom gptel-use-curl (and (executable-find "curl") t) "Whether gptel should prefer Curl when available." @@ -556,7 +560,7 @@ elements." (insert "/"))))))) (buffer-string))) -(defun gptel--convert-playback-markdown->org () +(defun gptel--stream-convert-markdown->org () "Return a Markdown to Org converter. This function parses a stream of Markdown text to Org