Mercurial > emacs
changeset 66152:6677034b52bb
(Sentinels): Clarify about output and quitting.
(Filter Functions): Mention with-local-quit.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Mon, 17 Oct 2005 16:16:27 +0000 |
parents | 934d10a9685c |
children | e2fa815b43c1 |
files | lispref/processes.texi |
diffstat | 1 files changed, 14 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/lispref/processes.texi Mon Oct 17 15:15:31 2005 +0000 +++ b/lispref/processes.texi Mon Oct 17 16:16:27 2005 +0000 @@ -1096,9 +1096,10 @@ Quitting is normally inhibited within a filter function---otherwise, the effect of typing @kbd{C-g} at command level or to quit a user -command would be unpredictable. If you want to permit quitting inside a -filter function, bind @code{inhibit-quit} to @code{nil}. -@xref{Quitting}. +command would be unpredictable. If you want to permit quitting inside +a filter function, bind @code{inhibit-quit} to @code{nil}. In most +cases, the right way to do this is with the macro +@code{with-local-quit}. @xref{Quitting}. If an error happens during execution of a filter function, it is caught automatically, so that it doesn't stop the execution of whatever @@ -1375,16 +1376,22 @@ termination will always run the sentinel exactly once. This is because the process status can't change again after termination. - Quitting is normally inhibited within a sentinel---otherwise, the -effect of typing @kbd{C-g} at command level or to quit a user command -would be unpredictable. If you want to permit quitting inside a -sentinel, bind @code{inhibit-quit} to @code{nil}. @xref{Quitting}. + Emacs explicitly checks for output from the process before running +the process sentinel. Once the sentinel runs due to process +termination, no further output can arrive from the process. A sentinel that writes the output into the buffer of the process should check whether the buffer is still alive. If it tries to insert into a dead buffer, it will get an error. If the buffer is dead, @code{(buffer-name (process-buffer @var{process}))} returns @code{nil}. + Quitting is normally inhibited within a sentinel---otherwise, the +effect of typing @kbd{C-g} at command level or to quit a user command +would be unpredictable. If you want to permit quitting inside a +sentinel, bind @code{inhibit-quit} to @code{nil}. In most cases, the +right way to do this is with the macro @code{with-local-quit}. +@xref{Quitting}. + If an error happens during execution of a sentinel, it is caught automatically, so that it doesn't stop the execution of whatever programs was running when the sentinel was started. However, if