Subject: Re: bug#4543: window-full-height-p

From: martin rudalics <[email-masked]>
Date: Fri, 02 Oct 2009 10:39:33 +0200

>>> (defun window-full-height-p (&optional window)
 >>>   (unless window
 >>>     (setq window (selected-window)))
 >>>   (= (window-height window)
 >>>      (window-height (frame-root-window (window-frame window)))))
 >
 > Please could this be installed?

I have a number of problems with this:

(1) The name is problematic.  Note that `window-full-width-p' has no
such problem because when it returns t the window is as wide as the
containing frame.

(2) It might give unexpected results when invoked with the minibuffer
window as argument.  Again `window-full-width-p' has no such problems.

(3) It must be rewritten as soon as someone implements horizontal
scrollbars ;-)

Currently, getting (and setting) the sizes of windows (or frames) is a
mess.  Consider, for example, `split-window': If you use `window-width'
on its argument WINDOW in order to pre-calculate the SIZE argument you
almost certainly end up doing the wrong thing.

Personally, I use a function `window-size' to return the total size of a
window thus avoiding such confusions:

DEFUN ("window-size", Fwindow_size, Swindow_size, 0, 2, 0,
        doc: /* Return total number of lines of WINDOW.
WINDOW defaults to the selected window.  The return values includes any
header- or mode-line.  Optional argument HORIZONTAL non-nil means return
total number of columns of WINDOW.  In this case the return value
includes any scroll-bars of WINDOW.  */)
      (window, horizontal)
      Lisp_Object window, horizontal;
{
   if (!NILP (horizontal))
     return decode_any_window (window)->total_cols;
   else
     return decode_any_window (window)->total_lines;
}

Anyway, if you can think of a better name (which should resolve (1) and
(2)) and a comment wrt (3) feel free to install it.  I'm currently a bit
reluctant to install because my internet connection has been unreliable
over the past weeks.

martin