Subject: Re: bug#38181: Actual height of mode-line not taken into account

From: martin rudalics <[email-masked]>
Date: Sat, 2 May 2020 20:06:38 +0200

> Suppose we had a Lisp-callable function which would return the height
 > of the mode line of a window as per the current mode-line-format for
 > that window -- would that make the solution possible/easier?

Suppose I wanted to write such a function.  Then the problem is with
scenarios like your earlier

   (defun test-popup ()
     (interactive)
     (set-face-attribute 'mode-line nil :height 350)
     (set-face-attribute 'mode-line-inactive nil :height 350)
     (with-current-buffer (generate-new-buffer "*test*")
       (save-excursion
	(insert "one\ntwo\nthree\nfour\nfive"))
       (let ((win (display-buffer (current-buffer)
				 '(display-buffer-in-side-window
				   (side . bottom)))))
	(fit-window-to-buffer win))))

If I wanted to take into account the changes of the face attributes in
'fit-window-to-buffer', I'd have to set 'inhibit-free-realized-faces'
there to nil in order to apply the necessary face changes.  Wouldn't
that possibly harm our window matrices?  Can you somehow summarize how
that variable is supposed to be treated in general?  I already gave up
fighting with it in Bug#40639.

Thanks, martin