* [PATCH v2 0/1] emacs: Kill the stderr buffer when an async process completes
[not found] <id:20180809205434.34404-1-dme@dme.org>
@ 2018-08-26 21:16 ` David Edmondson
2018-08-26 21:16 ` [PATCH v2 1/1] " David Edmondson
0 siblings, 1 reply; 3+ messages in thread
From: David Edmondson @ 2018-08-26 21:16 UTC (permalink / raw)
To: notmuch
emacs: Kill the stderr buffer when an async process completes
v2: Explain the make-process distinction in the error sentinel.
David Edmondson (1):
emacs: Kill the stderr buffer when an async process completes
emacs/notmuch-lib.el | 21 +++++++++++++++------
1 file changed, 15 insertions(+), 6 deletions(-)
--
2.17.1 (Apple Git-112)
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH v2 1/1] emacs: Kill the stderr buffer when an async process completes
2018-08-26 21:16 ` [PATCH v2 0/1] emacs: Kill the stderr buffer when an async process completes David Edmondson
@ 2018-08-26 21:16 ` David Edmondson
2018-08-29 9:42 ` David Bremner
0 siblings, 1 reply; 3+ messages in thread
From: David Edmondson @ 2018-08-26 21:16 UTC (permalink / raw)
To: notmuch
On some platforms (e.g. macOS), it is necessary to add a real sentinel
process for the error buffer used by `notmuch-start-notmuch' rather
than a no-op sentinel.
---
emacs/notmuch-lib.el | 21 +++++++++++++++------
1 file changed, 15 insertions(+), 6 deletions(-)
diff --git a/emacs/notmuch-lib.el b/emacs/notmuch-lib.el
index a7e02710..25d83fd6 100644
--- a/emacs/notmuch-lib.el
+++ b/emacs/notmuch-lib.el
@@ -909,7 +909,7 @@ invoke `set-process-sentinel' directly on the returned process,
as that will interfere with the handling of stderr and the exit
status."
- (let (err-file err-buffer proc
+ (let (err-file err-buffer proc err-proc
;; Find notmuch using Emacs' `exec-path'
(command (or (executable-find notmuch-command)
(error "Command not found: %s" notmuch-command))))
@@ -926,11 +926,13 @@ status."
:buffer buffer
:command (cons command args)
:connection-type 'pipe
- :stderr err-buffer))
+ :stderr err-buffer)
+ err-proc (get-buffer-process err-buffer))
(process-put proc 'err-buffer err-buffer)
- ;; Silence "Process NAME stderr finished" in stderr by adding a
- ;; no-op sentinel to the fake stderr process object
- (set-process-sentinel (get-buffer-process err-buffer) #'ignore))
+
+ (process-put err-proc 'err-file err-file)
+ (process-put err-proc 'err-buffer err-buffer)
+ (set-process-sentinel err-proc #'notmuch-start-notmuch-error-sentinel))
;; On Emacs versions before 25, there is no way to capture
;; stdout and stderr separately for asynchronous processes, or
@@ -990,9 +992,16 @@ status."
;; Emacs behaves strangely if an error escapes from a sentinel,
;; so turn errors into messages.
(message "%s" (error-message-string err))))
- (when err-buffer (kill-buffer err-buffer))
(when err-file (ignore-errors (delete-file err-file)))))
+(defun notmuch-start-notmuch-error-sentinel (proc event)
+ (let* ((err-file (process-get proc 'err-file))
+ ;; When `make-process' is available, use the error buffer
+ ;; associated with the process, otherwise the error file.
+ (err-buffer (or (process-get proc 'err-buffer)
+ (find-file-noselect err-file))))
+ (when err-buffer (kill-buffer err-buffer))))
+
;; This variable is used only buffer local, but it needs to be
;; declared globally first to avoid compiler warnings.
(defvar notmuch-show-process-crypto nil)
--
2.17.1 (Apple Git-112)
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH v2 1/1] emacs: Kill the stderr buffer when an async process completes
2018-08-26 21:16 ` [PATCH v2 1/1] " David Edmondson
@ 2018-08-29 9:42 ` David Bremner
0 siblings, 0 replies; 3+ messages in thread
From: David Bremner @ 2018-08-29 9:42 UTC (permalink / raw)
To: David Edmondson, notmuch
David Edmondson <dme@dme.org> writes:
> On some platforms (e.g. macOS), it is necessary to add a real sentinel
> process for the error buffer used by `notmuch-start-notmuch' rather
> than a no-op sentinel.
pushed to master,
d
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2018-08-29 9:42 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <id:20180809205434.34404-1-dme@dme.org>
2018-08-26 21:16 ` [PATCH v2 0/1] emacs: Kill the stderr buffer when an async process completes David Edmondson
2018-08-26 21:16 ` [PATCH v2 1/1] " David Edmondson
2018-08-29 9:42 ` David Bremner
Code repositories for project(s) associated with this public inbox
https://yhetil.org/notmuch.git/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).