]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix filter functions discussion in Lisp manual.
authorChong Yidong <cyd@stupidchicken.com>
Tue, 24 Aug 2010 20:43:24 +0000 (16:43 -0400)
committerChong Yidong <cyd@stupidchicken.com>
Tue, 24 Aug 2010 20:43:24 +0000 (16:43 -0400)
* processes.texi (Filter Functions): Use `buffer-live-p' instead
of `buffer-name' in the main text as well as in the example
(Bug#3098).

doc/lispref/ChangeLog
doc/lispref/processes.texi

index 70b82830b445657d9b53e5ee4068ba595d0d2d7e..53b8ac255223f6d7d9aa5dc4a065b91e47a83e2b 100644 (file)
@@ -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):
index 747d865b0e1bfd3fd19f8e3ea263f4377c5d05fb..265c76471f055705525f464c9217c50569e70b49 100644 (file)
@@ -1273,22 +1273,24 @@ process's buffer, mimicking the actions of Emacs when there is no
 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 @@ expression searching or matching had to explicitly save and restore the
 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