1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-17 17:58:46 +00:00

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).
This commit is contained in:
Chong Yidong 2010-08-24 16:43:24 -04:00
parent 44a41a47d1
commit 78e33835a3
2 changed files with 18 additions and 16 deletions

View 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):

View 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