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

From: Ihor Radchenko <[email-masked]>
Date: Sun, 16 Jul 2023 05:49:45 +0000

Eli Zaretskii <[email-masked]> writes:

>> At least, when the current buffer is only displayed in a single,
>> selected window, checking every window should not be necessary.
>
> The code which sets update_mode_lines doesn't know whether the current
> buffer will be displayed in a single window by the time redisplay
> kicks in.  It doesn't even know whether it will still be the current
> buffer by that time.  Because the Lisp program that is running and
> making the changes which cause update_mode_lines to be set can change
> these things before it finishes.

If the selected window changes for any reason, redisplaying the
previously selected window will be queued by select_window:

  if (NILP (norecord) || EQ (norecord, Qmark_for_redisplay))
    { /* Mark the window for redisplay since the selected-window has
	 a different mode-line.  */
      wset_redisplay (XWINDOW (selected_window)); 
      wset_redisplay (w);
    }
  else
    redisplay_other_windows ();

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>