branch: externals/llm commit cdbb41528c534bb22986602bea096aad5dda3053 Author: Roman Scherer <ro...@burningswell.com> Commit: Roman Scherer <ro...@burningswell.com>
Fix issue advancing the process buffer In a recent refactoring I introduced an issue where the process marker didn't get set, and thus insertions into the process buffer got messed up. This fixes the issue. I added more thorough tests for this as well over here: https://github.com/r0man/plz.el/blob/plz-media-type/tests/test-plz-media-type.el#L154-L233 --- plz-event-source.el | 51 +++++++++++++++++++++++++-------------------------- 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/plz-event-source.el b/plz-event-source.el index c98d6f86cb..fe09cdc4a8 100644 --- a/plz-event-source.el +++ b/plz-event-source.el @@ -420,32 +420,31 @@ (cl-defmethod plz-media-type-process ((media-type plz-media-type:text/event-stream) process chunk) "Process the CHUNK according to MEDIA-TYPE using PROCESS." - (when (buffer-live-p (process-buffer process)) - (with-current-buffer (process-buffer process) - (unless plz-event-source--current - (let* ((response (make-plz-response - :status (plz-response-status chunk) - :headers (plz-response-headers chunk))) - (source (plz-event-source-open - (plz-buffer-event-source - :buffer (buffer-name (process-buffer process)) - :handlers (seq-map - (lambda (pair) - (let ((type (car pair)) - (handler (cdr pair))) - (cond - ((equal "open" type) - (cons type (lambda (source event) - (setf (oref event data) response) - (funcall handler source event)))) - ((equal "close" type) - (cons type (lambda (source event) - (setf (oref event data) response) - (funcall handler source event)))) - (t pair)))) - (oref media-type events)))))) - (setq-local plz-event-source--current source))) - (plz-event-source-insert plz-event-source--current (plz-response-body chunk))))) + (unless plz-event-source--current + (let* ((response (make-plz-response + :status (plz-response-status chunk) + :headers (plz-response-headers chunk))) + (source (plz-event-source-open + (plz-buffer-event-source + :buffer (buffer-name (process-buffer process)) + :handlers (seq-map + (lambda (pair) + (let ((type (car pair)) + (handler (cdr pair))) + (cond + ((equal "open" type) + (cons type (lambda (source event) + (setf (oref event data) response) + (funcall handler source event)))) + ((equal "close" type) + (cons type (lambda (source event) + (setf (oref event data) response) + (funcall handler source event)))) + (t pair)))) + (oref media-type events)))))) + (setq-local plz-event-source--current source))) + (plz-event-source-insert plz-event-source--current (plz-response-body chunk)) + (set-marker (process-mark process) (point))) (cl-defmethod plz-media-type-then ((media-type plz-media-type:text/event-stream) response) "Transform the RESPONSE into a format suitable for MEDIA-TYPE."