Subject: bug#64596: 30.0.50; On FIXME: in src/buffer.c:1481 (force-mode-line-update)

From: Eli Zaretskii <[email-masked]>
Date: Sun, 16 Jul 2023 14:26:48 +0300

> From: Ihor Radchenko <[email-masked]>
> Cc: Eli Zaretskii <[email-masked]>, [email-masked]
> Date: Sun, 16 Jul 2023 10:38:14 +0000
> 
> It would be even better if *-mode-lines functions were renamed to
> something more explicit. It is very disorienting that "mode-line" may
> mean actual mode-line, but sometimes more than that.
> A clarifying comment is an improvement, but does not make the code in
> other places more readable.

If we want to do this, the job is larger yet.  We also have this:

  struct glyph_row
  {
    [...]
    /* True means row is a mode or header/tab-line.  */
    bool_bf mode_line_p : 1;

    /* True means row is a tab-line.  */
    bool_bf tab_line_p : 1;

  struct it
  {
    [...]
    /* True means window has a tab line at its top.  */
    bool_bf tab_line_p : 1;

    /* True means window has a mode line at its top.  */
    bool_bf header_line_p : 1;

  struct glyph_matrix
  {
    [...]
    /* True means window displayed in this matrix has a tab line.  */
    bool_bf tab_line_p : 1;

    /* True means window displayed in this matrix has a header
       line.  */
    bool_bf header_line_p : 1;

and the code which deals with these.  (Note that the bits are
inconsistent between glyph_row and the other two structures, and all
of them mention only 2 out of 3 attributes.)