Fix description of some window hooks

* doc/lispref/windows.texi (Window Hooks): Remove text that
warns against using 'save-window-excursion' while running
'window-size-change-functions', it's no more relevant.
Clarify description of 'window-configuration-change-hook'.
This commit is contained in:
Martin Rudalics 2018-11-18 09:24:10 +01:00
parent 88762b4063
commit 7252507699
2 changed files with 21 additions and 18 deletions

View file

@ -6016,26 +6016,24 @@ whether a specific window has changed size, compare the return values of
@code{window-pixel-height} for that window (@pxref{Window Sizes}). @code{window-pixel-height} for that window (@pxref{Window Sizes}).
These function are usually only called when at least one window was These function are usually only called when at least one window was
added or has changed size since the last time this hook was run for the added or has changed size since the last time this hook was run for
associated frame. In some rare cases this hook also runs when a window the associated frame. In some rare cases this hook also runs when a
that was added intermittently has been deleted afterwards. In these window that was added intermittently has been deleted afterwards. In
cases none of the windows on the frame will appear to have changed its these cases none of the windows on the frame will appear to have
size. changed its size.
You may use @code{save-selected-window} in these functions
(@pxref{Selecting Windows}). However, do not use
@code{save-window-excursion} (@pxref{Window Configurations}); exiting
that macro counts as a size change, which would cause these functions to
be called again.
@end defvar @end defvar
@defvar window-configuration-change-hook @defvar window-configuration-change-hook
A normal hook that is run every time the window configuration of a frame A normal hook that is run every time the window configuration of a
changes. Window configuration changes include splitting and deleting frame changes. Window configuration changes include splitting and
windows, and the display of a different buffer in a window. Resizing the deleting windows, and the display of a different buffer in a window.
frame or individual windows do not count as configuration changes. Use
@code{window-size-change-functions}, see above, when you want to track The hook can be also used for tracking changes of window sizes. It
size changes that are not caused by the deletion or creation of windows. is, however, not run when the size of a frame changes or automatic
resizing of a minibuffer window (@pxref{Minibuffer Windows}) changes
the size of another window. As a rule, adding a function to
@code{window-size-change-functions}, see above, is the recommended way
for reliably tracking size changes of any window.
The buffer-local value of this hook is run once for each window on the The buffer-local value of this hook is run once for each window on the
affected frame, with the relevant window selected and its buffer affected frame, with the relevant window selected and its buffer

View file

@ -9287,10 +9287,15 @@ displaying that processes's buffer."
(when size (when size
(set-process-window-size process (cdr size) (car size)))))))))) (set-process-window-size process (cdr size) (car size))))))))))
;; Remove the following call in Emacs 27, running
;; 'window-size-change-functions' should suffice.
(add-hook 'window-configuration-change-hook 'window--adjust-process-windows) (add-hook 'window-configuration-change-hook 'window--adjust-process-windows)
;; Catch any size changes not handled by
;; 'window-configuration-change-hook' (Bug#32720, "another issue" in
;; Bug#33230).
(add-hook 'window-size-change-functions (lambda (_frame) (add-hook 'window-size-change-functions (lambda (_frame)
(window--adjust-process-windows))) (window--adjust-process-windows)))
;; Some of these are in tutorial--default-keys, so update that if you ;; Some of these are in tutorial--default-keys, so update that if you
;; change these. ;; change these.