emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Proposal for extending set-process-filter


From: David Kastrup
Subject: Proposal for extending set-process-filter
Date: 27 Apr 2004 01:55:46 +0200

Currently, processes called with call-process can't have their stdout
and stderr directed to different buffers/filter functions/whatever.
This is painfully obvious when using pipes and redirections in eshell.

I'd propose that set-process-filter gets extended in the following
way:

set-process-filter is a built-in function in `src/process.c'.
(set-process-filter PROCESS FILTER)

Give PROCESS the filter function FILTER; nil means no filter.
t means stop accepting output from the process.

A filter can be 

1) a function which gets two arguments. [insert old description]
2) a buffer into which output gets inserted.
3) a file name for output.
4) t to stop accepting output.
5) a list of filter/file descriptor associations.
The car's of the elements of this list are an item from 1)-4) as
above, while the cdr is a list of file ids for which this item is
supposed to apply.

So to redirect output of stdout and stderr to /dev/null, you'd specify
(set-process-filter my-process '(("/dev/null" 1 2)))

If a list is specified in this manner, the operation of unspecified
file descriptors is not affected.

This does not yet do everything needed for a full-bodied eshell: input
redirections (including procedural input, equivalents to filter
functions) and output appending redirection (>>) are not covered
yet.  But it would be a first step.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum




reply via email to

[Prev in Thread] Current Thread [Next in Thread]