unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: martin rudalics <rudalics@gmx.at>
To: Carlos Pita <carlosjosepita2@gmail.com>
Cc: 38181@debbugs.gnu.org
Subject: bug#38181: Actual height of mode-line not taken into account
Date: Sun, 17 Oct 2021 10:33:52 +0200	[thread overview]
Message-ID: <65006f88-1151-34fe-2741-a80d328f96c5@gmx.at> (raw)
In-Reply-To: <CAEOO5Te389k3zB6SowKGkLRGNVEsj0FcR2-0f3ex8Y_U_LYtHw@mail.gmail.com>

 > Well, any relevant window hook in [1] is advertised as "called during
 > redisplay", so that surely isn't the place to trigger that same
 > redisplay to begin with...

Roughly spoken, redisplay calculates the height of the minibuffer window
and those of the mode lines and, if any of these changed since last
redisplay, does another redisplay in the hope that they stick to their
values now.  After that, it runs the hooks you mention above so these
can take the now final (wrt redisplay) window and mode line sizes into
account.

A function on any of these hooks that changes a mode line height or a
window size does that on its own risk.  It's _not_ recommended.

 > Let's go back to advising then. Here are some questions I have:
 >
 > 1. Is there a primitive function that is like the mother of all
 > windows?

I always wanted to write one to make 'display-buffer' simpler but nobody
was enthusiastic about it.

 > There is no window-create nor create-window alikes, so maybe
 > split-window-internal?
 >
 >      > Window creation means 'split-window' which assigns the new window a
 >      > buffer that appears in the window that was split.
 >
 >      So this more or less settles the question, but to be more precise:
 >      do you see any difference of relevance between advicing split-window
 >      and split-window-internal?

Never advise an internal function or one with an '-internal' postfix.
Such function may change or be removed at any time.

 > 2. Or is it better to advise set-window-buffer/configuration for
 > whatever reasons? Any or both of them?

Both.  Especially because you may want to reuse a window for showing
another buffer in it.

 > 3. If advising set-window-buffer/configuration is the preferred
 > method, I'm still assuming that we will keep a window parameter in
 > order to disable the forced redisplay after its first execution for the
 > window. Is there any reason not do so (taking into account what
 > I said before of the target use case: a single modeline height for
 > every modeline during the entire session).

The mode line height is window specific, taking into account what the
buffer, the window and the window's frame have set up for it.

 >       > Or do the mode lines of _all_ your windows have
 >       > the same height?  That indeed would simplify things a lot.
 >
 >       Yes, this is by far the usual case and I believe it's a fact that
 >       favours the "advise window creation" strategy over the
 >       "advise window buffer/config change events" (with or without
 >       the "just once per window" clause) strategy.

In one of my earlier postings I falsely assumed that we _could_ retrieve
the prospective heights of mode lines by calling
'pos-visible-in-window-p' followed by 'window-mode-line-height',
forgetting that the former restores the previous values after doing its
calculations.  By looking at these functions you could derive a new one
that calculates mode line heights in a similar way and peruse the return
values of that function in 'window-text-pixel-size' in the hope that
they won't change with the next redisplay.  The 'mode-lines' argument of
'window-text-pixel-size' should then accept a value like 'update' to
reflect this special use case.  It might be worth the experience.

martin





  parent reply	other threads:[~2021-10-17  8:33 UTC|newest]

Thread overview: 97+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-12 16:52 bug#38181: Actual height of mode-line not taken into account Jonas Bernoulli
2019-11-13  8:03 ` martin rudalics
2019-11-15 13:50   ` Eli Zaretskii
2019-11-15 13:48 ` Eli Zaretskii
2019-11-15 14:24   ` Jonas Bernoulli
2019-11-15 15:11     ` Eli Zaretskii
2019-11-15 23:51       ` Jonas Bernoulli
2019-11-16  8:38         ` Eli Zaretskii
2019-11-16 14:54           ` Jonas Bernoulli
2019-11-16 15:59             ` Eli Zaretskii
2019-11-17 16:17               ` Jonas Bernoulli
2019-11-15 19:38   ` Eli Zaretskii
2019-11-16  8:20     ` martin rudalics
2019-11-16  8:35       ` Eli Zaretskii
2019-11-16  8:57         ` martin rudalics
2019-11-16 10:57           ` Eli Zaretskii
2019-11-16 19:28             ` martin rudalics
2019-11-16 19:44               ` Eli Zaretskii
2019-11-17  8:55                 ` martin rudalics
2019-11-17 17:26                   ` Eli Zaretskii
2019-11-17 18:15                     ` martin rudalics
2019-11-17 18:35                       ` Eli Zaretskii
2019-11-18  9:44                         ` martin rudalics
2019-11-18 15:42                           ` Eli Zaretskii
2019-11-18 18:45                             ` martin rudalics
2020-05-02 18:06                     ` martin rudalics
2020-05-04 13:46                       ` Eli Zaretskii
2020-05-04 15:04                         ` martin rudalics
2020-05-04 17:05                           ` martin rudalics
2020-05-05  8:32                             ` martin rudalics
2020-05-05 14:58                               ` Eli Zaretskii
2020-05-05 16:57                                 ` martin rudalics
2020-05-05 17:11                                   ` Eli Zaretskii
2020-05-06  6:50                                     ` martin rudalics
2020-05-06  9:27                                       ` Eli Zaretskii
2020-05-06  9:44                                         ` martin rudalics
2020-05-06 14:16                                         ` Eli Zaretskii
2020-05-07  8:34                                           ` martin rudalics
2020-05-07 12:41                                             ` Eli Zaretskii
2020-05-06 14:44                                   ` Eli Zaretskii
2020-05-07  8:34                                     ` martin rudalics
2020-05-10 14:33                                       ` Eli Zaretskii
2020-05-11  8:30                                         ` martin rudalics
2020-05-15 15:00                                           ` Eli Zaretskii
2020-05-16  8:44                                             ` martin rudalics
2020-05-16 10:46                                               ` Eli Zaretskii
2019-11-16 15:27           ` Jonas Bernoulli
2019-11-16 16:19             ` Eli Zaretskii
2019-11-16 19:30               ` martin rudalics
2019-11-16 19:45                 ` Eli Zaretskii
2019-11-17  9:01                   ` martin rudalics
2019-11-17 17:22                     ` Eli Zaretskii
2019-11-17 18:16                       ` martin rudalics
2019-11-17 18:39                         ` Eli Zaretskii
2019-11-18  9:45                           ` martin rudalics
2019-11-18 15:46                             ` Eli Zaretskii
2019-11-18 18:46                               ` martin rudalics
2019-11-17 16:21               ` Jonas Bernoulli
2019-11-16 19:30             ` martin rudalics
2021-10-15  5:13 ` Carlos Pita
2021-10-15  7:05   ` martin rudalics
2021-10-15  7:26     ` Carlos Pita
2021-10-15  7:54       ` Eli Zaretskii
2021-10-15  8:18         ` Carlos Pita
2021-10-15  8:35       ` martin rudalics
2021-10-15  8:45         ` Carlos Pita
     [not found]         ` <CAEOO5TdaV=tdj23afEcqJGZf4JM3VVQ6TFt4F3q6k6d=f4_36w@mail.gmail.com>
     [not found]           ` <776a35b7-1920-2987-88ae-6dcab958a8e4@gmx.at>
2021-10-15  9:07             ` Carlos Pita
2021-10-16  7:55               ` martin rudalics
2021-10-16 11:23                 ` Carlos Pita
2021-10-16 16:48                   ` martin rudalics
2021-10-16 18:00                     ` Carlos Pita
2021-10-16 19:41                       ` martin rudalics
2021-10-16 19:57                         ` Carlos Pita
2021-10-16 21:27                           ` Carlos Pita
2021-10-17  6:06                             ` Eli Zaretskii
2021-10-17  6:45                               ` Carlos Pita
2021-10-17  8:34                               ` martin rudalics
2021-10-17  8:34                             ` martin rudalics
2021-10-17  8:33                           ` martin rudalics [this message]
2021-10-18  9:34                             ` martin rudalics
2021-10-18 15:56                               ` Carlos Pita
2021-10-18 17:44                                 ` martin rudalics
2021-10-18 18:27                                   ` Eli Zaretskii
2021-10-18 23:35                                     ` Carlos Pita
2021-10-19  0:11                                       ` Carlos Pita
2021-10-19  9:25                                     ` martin rudalics
2021-10-19 12:22                                       ` Eli Zaretskii
2021-10-22  9:04                                       ` martin rudalics
2021-10-22 14:55                                         ` Carlos Pita
2021-11-07 18:48                                           ` Carlos Pita
     [not found]                                     ` <CAEOO5TemeSrLkudEBRbMaLrCXq7A0y5uv+SdcfZwMo77onMMoA@mail.gmail.com>
2021-10-19 10:09                                       ` martin rudalics
2021-10-15  7:51   ` Eli Zaretskii
2021-10-15  8:00     ` Carlos Pita
2021-10-15 10:40       ` Eli Zaretskii
2021-10-15 18:33         ` Carlos Pita
2021-10-15 19:08           ` Eli Zaretskii
2021-10-15 20:09             ` Carlos Pita

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=65006f88-1151-34fe-2741-a80d328f96c5@gmx.at \
    --to=rudalics@gmx.at \
    --cc=38181@debbugs.gnu.org \
    --cc=carlosjosepita2@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).