unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Window tree and window's internal height
@ 2018-11-17 12:58 Eli Zaretskii
  2018-11-17 18:39 ` martin rudalics
  0 siblings, 1 reply; 11+ messages in thread
From: Eli Zaretskii @ 2018-11-17 12:58 UTC (permalink / raw)
  To: martin rudalics; +Cc: emacs-devel

Martin, I'd like your opinion on the following two issues.  (Anyone
else who has an opinion is welcome to chime in.)

First, we have this in the ELisp manual:

     A minibuffer window (*note Minibuffer Windows::) is not part of its
  frame’s window tree unless the frame is a minibuffer-only frame.
  Nonetheless, most of the functions in this section accept the minibuffer
  window as an argument.  Also, the function ‘window-tree’ described at
  the end of this section lists the minibuffer window alongside the actual
  window tree.

The first sentence is incorrect, isn't it?  Because Emacs disagrees:

  emacs -Q
  M-: (window-next-sibling) RET
   => #<window 4 on  *Minibuf-0*>

And if that sentence is incorrect, we don't need the next two
"exceptions", right?

Next, please have a look at the function window_internal_height:

  /* Return number of lines of text (not counting mode lines) in W.  */

  int
  window_internal_height (struct window *w)
  {
    int ht = w->total_lines;

    if (!MINI_WINDOW_P (w))
      {
	if (!NILP (w->parent)
	    || WINDOWP (w->contents)
	    || !NILP (w->next)
	    || !NILP (w->prev)
	    || window_wants_mode_line (w))
	  --ht;

	if (window_wants_header_line (w))
	  --ht;
      }

    return ht;
  }

I don't understand any of the conditions except window_wants_mode_line
when we decide whether to decrease the height due to the mode line.
What do the other conditions have to do with the window's height?  I
could perhaps understand the "WINDOWP (w->contents)" part, as some
kind of optimization for non-leaf windows, which assumes the default
of having the mode line, but the rest seem simply wrong, don't they?
(The WINDOWP condition is not really interesting, as I don't see any
call of this function for a non-leaf window.)

This is the immediate cause of bug#33363, which I could fix either by
a local change in try_window_id, or by modifying
window_internal_height to leave only the window_wants_mode_line
condition there.  If the latter might be unsafe, maybe I should do the
former on the release branch and the latter on master.  WDYT?

TIA



^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2018-11-20 23:50 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-11-17 12:58 Window tree and window's internal height Eli Zaretskii
2018-11-17 18:39 ` martin rudalics
2018-11-18 15:53   ` Eli Zaretskii
2018-11-18 19:40     ` martin rudalics
2018-11-18 20:25       ` Eli Zaretskii
2018-11-19  9:41         ` martin rudalics
2018-11-19 18:36           ` Eli Zaretskii
2018-11-20  9:28             ` martin rudalics
2018-11-20 16:06               ` Eli Zaretskii
2018-11-20 18:49                 ` Eli Zaretskii
2018-11-20 23:50                   ` Richard Stallman

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).