Subject: Re: bug#63825: 29.0.90; The header line should be hidden when empty

From: Eli Zaretskii <[email-masked]>
Date: Thu, 01 Jun 2023 21:46:00 +0300

> From: Eshel Yaron <[email-masked]>
> Cc: Spencer Baugh <[email-masked]>,  [email-masked]
> Date: Thu, 01 Jun 2023 19:45:39 +0300
> 
> Eli Zaretskii <[email-masked]> writes:
> 
> > header-line-format supports :eval and :when, so why cannot
> > which-function-mode use those to yield nil when there's nothing to
> > show?
> 
> I thought so as well, but it seems that the header line is displayed
> even when the value of `header-line-format` yields nil, if it isn't
> plain nil.
> 
> So this shows an empty header line:
> 
> --8<---------------cut here---------------start------------->8---
> (setq-default header-line-format '(:eval nil))
> --8<---------------cut here---------------end--------------->8---
> 
> (In Emacs master with -Q.)

It shouldn't be hard to make this special case behave as you want.
Specifically, if the header-line-format is just a single cons cell,
and the car of that cons cell is either :eval or a symbol, and the
result of evaluation those yields nil, don't display the header line.
(I don't really like the idea of not displaying the mode line under
the same conditions.)

Patches welcome.