# HG changeset patch # User Richard M. Stallman # Date 1129565787 0 # Node ID 6677034b52bb8ef7b5686cafa60a18aec77043c0 # Parent 934d10a9685c770360ebc4159b8d906bf3f3655e (Sentinels): Clarify about output and quitting. (Filter Functions): Mention with-local-quit. diff -r 934d10a9685c -r 6677034b52bb lispref/processes.texi --- 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