mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-27 10:54:40 +00:00
Document automatic adjustment of process' logical window dimensions
* doc/lispref/processes.texi (Process Buffers): Document 'set-process-window-size' and 'window-adjust-process-window-size-function'. * etc/NEWS: Mention the new functionality and variable. * src/process.c (Fset_process_window_size): Improve the doc string.
This commit is contained in:
parent
dc662713e2
commit
4ffec91aa1
@ -1381,6 +1381,58 @@ Killing the process's buffer deletes the process, which kills the
|
|||||||
subprocess with a @code{SIGHUP} signal (@pxref{Signals to Processes}).
|
subprocess with a @code{SIGHUP} signal (@pxref{Signals to Processes}).
|
||||||
@end defun
|
@end defun
|
||||||
|
|
||||||
|
If the process's buffer is displayed in a window, your Lisp program
|
||||||
|
may wish telling the process the dimensions of that window, so that
|
||||||
|
the process could adapt its output to those dimensions, much as it
|
||||||
|
adapts to the screen dimensions. The following functions allow to
|
||||||
|
communicate this kind of information to processes; however, not all
|
||||||
|
systems support the underlying functionality, so it is best to provide
|
||||||
|
fallbacks, e.g., via command-line arguments or environment variables.
|
||||||
|
|
||||||
|
@defun set-process-window-size process height width
|
||||||
|
Tell @var{process} that its logical window size has dimensions
|
||||||
|
@var{width} by @var{height}, in character units. If this function
|
||||||
|
succeeds in communicating this information to the process, it returns
|
||||||
|
@code{t}; otherwise it returns @code{nil}.
|
||||||
|
@end defun
|
||||||
|
|
||||||
|
When windows that display buffers associated with process change their
|
||||||
|
dimensions, the affected processes should be told about these changes.
|
||||||
|
By default, when the window configuration changes, Emacs will
|
||||||
|
automatically call @code{set-process-window-size} on behalf of every
|
||||||
|
process whose buffer is displayed in a window, passing it the smallest
|
||||||
|
dimensions of all the windows displaying the process's buffer. This
|
||||||
|
works via @code{window-configuration-change-hook} (@pxref{Window
|
||||||
|
Hooks}), which is told to invoke the function that is the value of
|
||||||
|
the variable @code{window-adjust-process-window-size-function} for
|
||||||
|
each process whose buffer is displayed in at least one window. You
|
||||||
|
can customize this behavior by setting the value of that variable.
|
||||||
|
|
||||||
|
@defopt window-adjust-process-window-size-function
|
||||||
|
The value of this variable should be a function of two arguments: a
|
||||||
|
process and the list of windows displaying the process's buffer. When
|
||||||
|
the function is called, the process's buffer is the current buffer.
|
||||||
|
The function should return a cons cell @w{@code{(@var{width}
|
||||||
|
. @var{height})}} that describes the dimensions of the logical process
|
||||||
|
window to be passed via a call to @code{set-process-window-size}. The
|
||||||
|
function can also return @code{nil}, in which case Emacs will not call
|
||||||
|
@code{set-process-window-size} for this process.
|
||||||
|
|
||||||
|
Emacs supplies two predefined values for this variable:
|
||||||
|
@code{window-adjust-process-window-size-smallest}, which returns the
|
||||||
|
smallest of all the dimensions of the windows that display a process's
|
||||||
|
buffer; and @code{window-adjust-process-window-size-largest}, which
|
||||||
|
returns the largest dimensions. For more complex strategies, write
|
||||||
|
your own function.
|
||||||
|
|
||||||
|
This variable can be buffer-local.
|
||||||
|
@end defopt
|
||||||
|
|
||||||
|
If the process has the @code{adjust-window-size-function} property
|
||||||
|
(@pxref{Process Information}), its value overrides the global and
|
||||||
|
buffer-local values of
|
||||||
|
@code{window-adjust-process-window-size-function}.
|
||||||
|
|
||||||
@node Filter Functions
|
@node Filter Functions
|
||||||
@subsection Process Filter Functions
|
@subsection Process Filter Functions
|
||||||
@cindex filter function
|
@cindex filter function
|
||||||
|
8
etc/NEWS
8
etc/NEWS
@ -1587,6 +1587,14 @@ of subprocess.
|
|||||||
process filter, sentinel, etc., through keyword arguments (similar to
|
process filter, sentinel, etc., through keyword arguments (similar to
|
||||||
'make-network-process').
|
'make-network-process').
|
||||||
|
|
||||||
|
+++
|
||||||
|
** Subprocesses are automatically told about changes in window dimensions
|
||||||
|
The new option 'window-adjust-process-window-size-function' controls
|
||||||
|
how subprocesses are told to adapt their logical window sizes to
|
||||||
|
changes in the Emacs window configuration. Its default value calls
|
||||||
|
'set-process-window-size' with the smallest dimensions of all the
|
||||||
|
windows that display the subprocess's buffer.
|
||||||
|
|
||||||
+++
|
+++
|
||||||
** A new function 'directory-files-recursively' returns all matching
|
** A new function 'directory-files-recursively' returns all matching
|
||||||
files (recursively) under a directory.
|
files (recursively) under a directory.
|
||||||
|
@ -1108,7 +1108,9 @@ See `set-process-sentinel' for more info on sentinels. */)
|
|||||||
|
|
||||||
DEFUN ("set-process-window-size", Fset_process_window_size,
|
DEFUN ("set-process-window-size", Fset_process_window_size,
|
||||||
Sset_process_window_size, 3, 3, 0,
|
Sset_process_window_size, 3, 3, 0,
|
||||||
doc: /* Tell PROCESS that it has logical window size HEIGHT and WIDTH. */)
|
doc: /* Tell PROCESS that it has logical window size WIDTH by HEIGHT.
|
||||||
|
Value is t if PROCESS was successfully told about the window size,
|
||||||
|
nil otherwise. */)
|
||||||
(Lisp_Object process, Lisp_Object height, Lisp_Object width)
|
(Lisp_Object process, Lisp_Object height, Lisp_Object width)
|
||||||
{
|
{
|
||||||
CHECK_PROCESS (process);
|
CHECK_PROCESS (process);
|
||||||
|
Loading…
Reference in New Issue
Block a user