GNU bug report logs -
#73627
29.3; window-main-window: Discrepancy between behaviour and docstring
Previous Next
Full log
Message #11 received at 73627 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
>> To reproduce from emacs -Q, evaluate in the scratch buffer:
>>
>> (display-buffer-in-side-window
>> (get-scratch-buffer-create)
>> '((side . left)))
>> (split-window (frame-root-window) nil 'below)
>> (window-main-window)
>>
>> Observe that (window-main-window) returns the selected window. However, the
>> window that was created by splitting below is not a side window, and it does not
>> descend from the selected window. This contradicts part of the docstring of
>> window-main-window:
>>
>> "If FRAME has no side windows, return FRAME's root window. Otherwise, return
>> either an internal non-side window such that all other non-side windows on FRAME
>> descend from it, or the single live non-side window of FRAME."
This accusation is correct.
>> Splitting a frame's root window in the presence of side windows seems to often
>> lead to such discrepancies. I have observed such behaviour in the packages hydra
>> (on ELPA, in its lv-window function), and shell-pop (from another package
>> archive).
>>
>> Related to that: Is the following supposed to be an invariant for each frame,
>> and should it be considered a bug when packages violate it?
>>
>> Invariant:
>> There exists a window MAIN such that for all live windows WIN (other than MAIN)
>> we have: WIN descends from MAIN if and only if it is not a side window.
It should be an invariant and it is a bug when packages (or, as in the
case at hand Emacs itself) violate it.
>> This is something I assumed and was surprised to see violated.
>
> Martin, any comments?
Ferdinand is right. 'split-window' must split the frame's main window
instead of the root window. Patch attached. It should be OK for the
release version but I won't insist since the bug has been with us ever
since side windows exist.
Thanks for the report, martin
[window.el.diff (text/x-patch, attachment)]
This bug report was last modified 275 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.