mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-06 23:51:24 -08:00
(status_notify): Don't read from process if filter is t.
(Fset_process_filter): Set or clear bit in input_wait_mask when nec.
This commit is contained in:
parent
4e24c6b147
commit
20ddfff719
1 changed files with 7 additions and 1 deletions
|
|
@ -678,6 +678,7 @@ DEFUN ("process-mark", Fprocess_mark, Sprocess_mark,
|
|||
DEFUN ("set-process-filter", Fset_process_filter, Sset_process_filter,
|
||||
2, 2, 0,
|
||||
"Give PROCESS the filter function FILTER; nil means no filter.\n\
|
||||
t means stop accepting output from the process.\n\
|
||||
When a process has a filter, each time it does output\n\
|
||||
the entire string of output is passed to the filter.\n\
|
||||
The filter gets two arguments: the process and the string of output.\n\
|
||||
|
|
@ -686,6 +687,10 @@ If the process has a filter, its buffer is not used for output.")
|
|||
register Lisp_Object proc, filter;
|
||||
{
|
||||
CHECK_PROCESS (proc, 0);
|
||||
if (EQ (filter, Qt))
|
||||
FD_CLR (XPROCESS (proc)->infd, &input_wait_mask);
|
||||
else if (EQ (XPROCESS (proc)->filter, Qt))
|
||||
FD_SET (XPROCESS (proc)->infd, &input_wait_mask);
|
||||
XPROCESS (proc)->filter = filter;
|
||||
return filter;
|
||||
}
|
||||
|
|
@ -2849,7 +2854,8 @@ status_notify ()
|
|||
|
||||
/* If process is still active, read any output that remains. */
|
||||
if (XFASTINT (p->infd))
|
||||
while (read_process_output (proc, XFASTINT (p->infd)) > 0);
|
||||
while (! EQ (p->filter, Qt)
|
||||
&& read_process_output (proc, XFASTINT (p->infd)) > 0);
|
||||
|
||||
buffer = p->buffer;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue