changeset 109968:88f25e07e4eb

Fix filter functions discussion in Lisp manual. * processes.texi (Filter Functions): Use `buffer-live-p' instead of `buffer-name' in the main text as well as in the example (Bug#3098).
author Chong Yidong <cyd@stupidchicken.com>
date Tue, 24 Aug 2010 16:43:24 -0400
parents 4653f09a70cf
children d539b74d6530
files doc/lispref/ChangeLog doc/lispref/processes.texi
diffstat 2 files changed, 18 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/doc/lispref/ChangeLog	Tue Aug 24 16:29:44 2010 -0400
+++ b/doc/lispref/ChangeLog	Tue Aug 24 16:43:24 2010 -0400
@@ -1,3 +1,9 @@
+2010-08-24  Markus Triska  <triska@gmx.at>
+
+	* processes.texi (Filter Functions): Use `buffer-live-p' instead
+	of `buffer-name' in the main text as well as in the example
+	(Bug#3098).
+
 2010-08-22  Chong Yidong  <cyd@stupidchicken.com>
 
 	* nonascii.texi (Text Representations):
--- a/doc/lispref/processes.texi	Tue Aug 24 16:29:44 2010 -0400
+++ b/doc/lispref/processes.texi	Tue Aug 24 16:43:24 2010 -0400
@@ -1273,22 +1273,24 @@
 filter.  Such filter functions need to use @code{set-buffer} in order to
 be sure to insert in that buffer.  To avoid setting the current buffer
 semipermanently, these filter functions must save and restore the
-current buffer.  They should also update the process marker, and in some
-cases update the value of point.  Here is how to do these things:
+current buffer.  They should also check whether the buffer is still
+alive, update the process marker, and in some cases update the value
+of point.  Here is how to do these things:
 
 @smallexample
 @group
 (defun ordinary-insertion-filter (proc string)
-  (with-current-buffer (process-buffer proc)
-    (let ((moving (= (point) (process-mark proc))))
+  (when (buffer-live-p (process-buffer proc))
+    (with-current-buffer (process-buffer proc)
+      (let ((moving (= (point) (process-mark proc))))
 @end group
 @group
-      (save-excursion
-        ;; @r{Insert the text, advancing the process marker.}
-        (goto-char (process-mark proc))
-        (insert string)
-        (set-marker (process-mark proc) (point)))
-      (if moving (goto-char (process-mark proc))))))
+        (save-excursion
+          ;;  <at> r{Insert the text, advancing the process marker.}
+          (goto-char (process-mark proc))
+          (insert string)
+          (set-marker (process-mark proc) (point)))
+        (if moving (goto-char (process-mark proc)))))))
 @end group
 @end smallexample
 
@@ -1315,12 +1317,6 @@
 match data.  Now Emacs does this automatically for filter functions;
 they never need to do it explicitly.  @xref{Match Data}.
 
-  A filter function 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.  The expression
-@code{(buffer-name (process-buffer @var{process}))} returns @code{nil}
-if the buffer is dead.
-
   The output to the function may come in chunks of any size.  A program
 that produces the same output twice in a row may send it as one batch of
 200 characters one time, and five batches of 40 characters the next.  If