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