bug-gnu-emacs
[Top][All Lists]
Advanced

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

bug#68235: 29.1.90; Switching tabs stops following process output in sel


From: martin rudalics
Subject: bug#68235: 29.1.90; Switching tabs stops following process output in selected window
Date: Thu, 18 Jan 2024 11:47:52 +0100
User-agent: Mozilla Thunderbird

>> We can set up a buffer local variable whose value is a function that
>> 'set-window-configuration' would call whenever it finds a window with
>> that buffer dead. 'set-window-configuration' would then check whether
>> that function correctly returned a live buffer to show in that window.
>> If the function succeeded, 'set-window-configuration' could try to
>> restore the earlier values of window point and start in the window.  If
>> the function failed, 'set-window-configuration' would either delete the
>> window or display *scratch* in it.
>
> Probably better to keep this function in a window parameter
> like you proposed earlier to restore dired positions.

I just tried what I proposed above and noticed that it's virtually
impossible to come up with a safe solution.  Running Lisp from the
middle of 'set-window-configuration' is madness because the respective
frame may be still under construction at that time with windows, their
respective links, sizes and buffers missing.

What we can safely do is the following: Give 'set-window-configuration'
a new argument, say 'keep-dead-buffer-windows'.  If non-nil,
'set-window-configuration' does not delete dead buffer windows but shows
*scratch* in them.  'post-set-window-configuration-functions' would then
pass two arguments: the respective frame and a list of four entries for
each dead buffer window it found: The window, the buffer it previously
showed, its window point and its window start position.  A function run
by that hook would then be able to replace *scratch* with, for example,
a new buffer visiting the file the previously shown buffer visited and
also restore point and window start of that window.

martin





reply via email to

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