[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Add function to rotate/transpose all windows
From: |
pranshu sharma |
Subject: |
Re: Add function to rotate/transpose all windows |
Date: |
Wed, 25 Sep 2024 18:34:55 +1000 |
User-agent: |
Gnus/5.13 (Gnus v5.13) |
martin rudalics <rudalics@gmx.at> writes:
>>> https://www.emacswiki.org/emacs/TransposeFrame
>>> The code in this has the following limitations:
>>> - Does not work in emacs 29.1
>
> It works here when I remove the
>
> (window-redisplay-end-trigger tree)
>
> (set-window-redisplay-end-trigger window (pop config))
>
> lines in such versions.
>
>>> - No good way to transpose only specific parts of window tree
>
> Then the FRAME arguments should probably become WINDOW-OR-FRAME and
> accept arbitrary internal windows as value.
>
>> Thanks.
>>
>> Martin, any comments or suggestions?
>
> The problem of any such package is that Emacs never provided a suitable
> balance between explicit management of objects like buffers or windows
> (via 'kill-buffer' and 'delete-window') and the subsequent internal
> handling of these objects.
>
> In particular, the 'delete-window'/'split-window' paradigm may fail when
> window objects have been stored in variables. Take this excerpt from
> TransposeFrame
>
> (if (eq (overlay-get ol 'window) orig-window)
> (overlay-put ol 'window window))))
>
> If this gets called within a 'save-window-excursion', then the 'window'
> property of overlays may change from 'orig-window' to 'window'. When
> 'save-window-excursion' exits and restores 'orig-window' and deletes
> 'window', these overlays will now reference a dead window. This problem
> could be partially fixed by using the 'clone-of' parameter of the
> window. But that would fail when windows are rotated a second time.
>From what I understand, the main problems are happening when destroying
and recreating the window arragnment. How about adding a function that
toggles or changes the window arrangment non recursivly, which will deal
with all the backend details, and the main rotate function can just
recursivly call that on all windows.
>
> Such problems could be fixed if we were able to reference windows by
> their number (or an arbitrary name) and have Lisp references to a window
> use that number instead of the object. It might, however, take
> considerable time to have such a concept enter the minds of people used
> to storing window identities as Lisp objects.
>
> martin
- Add function to rotate/transpose all windows, pranshu sharma, 2024/09/24
- Re: Add function to rotate/transpose all windows, martin rudalics, 2024/09/26
- Re: Add function to rotate/transpose all windows, Eli Zaretskii, 2024/09/26
- Re: Add function to rotate/transpose all windows, martin rudalics, 2024/09/27
- Re: Add function to rotate/transpose all windows, Eli Zaretskii, 2024/09/28
- Re: Add function to rotate/transpose all windows, martin rudalics, 2024/09/28
- Re: Add function to rotate/transpose all windows, Eli Zaretskii, 2024/09/28