[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/plz 797963c035 02/40: WIP: Use separate buffer for STDE
From: |
ELPA Syncer |
Subject: |
[elpa] externals/plz 797963c035 02/40: WIP: Use separate buffer for STDERR |
Date: |
Mon, 26 Jun 2023 06:59:31 -0400 (EDT) |
branch: externals/plz
commit 797963c0359ada41e9d8bb206bc27f4031427c61
Author: Adam Porter <adam@alphapapa.net>
Commit: Adam Porter <adam@alphapapa.net>
WIP: Use separate buffer for STDERR
---
plz.el | 46 +++++++++++++++++++++++++---------------------
1 file changed, 25 insertions(+), 21 deletions(-)
diff --git a/plz.el b/plz.el
index 40c35050e7..232823e6f9 100644
--- a/plz.el
+++ b/plz.el
@@ -407,6 +407,7 @@ NOQUERY is passed to `make-process', which see."
(_ decode)))
(default-directory temporary-file-directory)
(process-buffer (generate-new-buffer " *plz-request-curl*"))
+ (stderr-buffer (generate-new-buffer " *plz-request-curl-stderr*"))
(process (make-process :name "plz-request-curl"
:buffer process-buffer
:coding 'binary
@@ -416,7 +417,7 @@ NOQUERY is passed to `make-process', which see."
;; FIXME: Set the stderr process sentinel to
ignore to prevent
;; "process finished" garbage in the buffer
(response body). See:
;;
<https://stackoverflow.com/questions/42810755/how-to-remove-process-finished-message-from-make-process-or-start-process-in-e>.
- :stderr process-buffer
+ :stderr stderr-buffer
:noquery noquery))
sync-p)
(when (eq 'sync then)
@@ -499,26 +500,29 @@ NOQUERY is passed to `make-process', which see."
(process-send-region process (point-min) (point-max))))))
(process-send-eof process)
(if sync-p
- (progn
- (while
- ;; According to the Elisp manual, blocking on a process's
- ;; output is really this simple. And it seems to work.
- (accept-process-output process))
- (unless (process-get process :plz-result)
- (plz--sentinel process "finished\n")
- (unless (process-get process :plz-result)
- (error "NO RESULT FROM PROCESS:%S BUFFER-STRING:%S" process
- (buffer-string))))
- (pcase (process-get process :plz-result)
- ((pred plz-error-p)
- ;; FIXME: ...signal correct error type
- (if plz-else
- (funcall plz-else (process-get process :plz-result))
- (signal 'plz-http-error (process-get process :plz-result))))
- (_
- (prog1 (process-get process :plz-result) ;; plz-result
- (unless (eq as 'buffer)
- (kill-buffer))))))
+ (unwind-protect
+ (progn
+ ;; See Info node `(elisp)Accepting Output'.
+ (unless (and process (get-buffer-process stderr-buffer))
+ (error "Process unexpectedly nil"))
+ (while (accept-process-output process))
+ (while (accept-process-output (get-buffer-process
stderr-buffer)))
+ (unless (process-get process :plz-result)
+ (plz--sentinel process "finished\n")
+ (unless (process-get process :plz-result)
+ (error "NO RESULT FROM PROCESS:%S BUFFER-STRING:%S"
process
+ (buffer-string))))
+ (pcase (process-get process :plz-result)
+ ((pred plz-error-p)
+ ;; FIXME: ...signal correct error type
+ (if plz-else
+ (funcall plz-else (process-get process :plz-result))
+ (signal 'plz-http-error (process-get process
:plz-result))))
+ (_
+ (process-get process :plz-result))))
+ (unless (eq as 'buffer)
+ (kill-buffer process-buffer))
+ (kill-buffer stderr-buffer))
process)))))
;;;;; Queue
- [elpa] externals/plz updated (a8ae654530 -> 5e63662e21), ELPA Syncer, 2023/06/26
- [elpa] externals/plz 9ac623858c 01/40: WIP: Fix nil return value bugs, ELPA Syncer, 2023/06/26
- [elpa] externals/plz 797963c035 02/40: WIP: Use separate buffer for STDERR,
ELPA Syncer <=
- [elpa] externals/plz 50d977288e 04/40: Fix: Set stderr process sentinel to #'ignore, ELPA Syncer, 2023/06/26
- [elpa] externals/plz 0d4356640d 05/40: Change: Use only one error type, plz-error, ELPA Syncer, 2023/06/26
- [elpa] externals/plz 046f29a816 08/40: Docs: Remove old TODO, ELPA Syncer, 2023/06/26
- [elpa] externals/plz 81d1c61f1f 07/40: Tidy docstring and comment, ELPA Syncer, 2023/06/26
- [elpa] externals/plz 56c92ff78e 12/40: Tidy, ELPA Syncer, 2023/06/26
- [elpa] externals/plz 43231ac43c 14/40: WIP: Use timer for response parsing, ELPA Syncer, 2023/06/26
- [elpa] externals/plz d6dfe3b27a 11/40: Tidy: Remove plz-result, ELPA Syncer, 2023/06/26
- [elpa] externals/plz 85ac0fbe38 15/40: WIP: Use sentinel value; add comments, ELPA Syncer, 2023/06/26
- [elpa] externals/plz 7d197e968a 20/40: Change: (plz--respond) Don't catch errors from THEN/ELSE, ELPA Syncer, 2023/06/26
- [elpa] externals/plz a2c20b1437 24/40: Comment: TODO, ELPA Syncer, 2023/06/26