unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: Michael Heerdegen <michael_heerdegen@web.de>
Cc: larsi@gnus.org, esabof@gmail.com, 14582@debbugs.gnu.org
Subject: bug#14582: 24.3.50.1; Strange overlay behavior, when window-start is inside an overlay.
Date: Mon, 28 Feb 2022 15:10:16 +0200	[thread overview]
Message-ID: <83r17nm91j.fsf@gnu.org> (raw)
In-Reply-To: <87wnhfrj7b.fsf@web.de> (message from Michael Heerdegen on Mon, 28 Feb 2022 00:19:36 +0100)

> From: Michael Heerdegen <michael_heerdegen@web.de>
> Cc: larsi@gnus.org,  esabof@gmail.com,  14582@debbugs.gnu.org
> Date: Mon, 28 Feb 2022 00:19:36 +0100
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> > In the context of redisplay, any change of the window-start point is
> > referred to as "scrolling the window".  So when you tell the display
> > engine to make sure the window-start is visible, and the last used
> > window-start isn't, you cannot at the same time ask it not to scroll,
> > because that's a contradiction.
> 
> But when I said that using the new variable makes Emacs really scroll,
> visually, not only in an abstract sense, didn't you say mean that was
> unavoidable?

I think we are having a terminological misunderstanding here.  What do
you mean by "really scroll", and how is it different from the other
types of "scrolling", in your mental model of what we are discussing?

I'm asking because it is not trivial to define "real scrolling".  For
example, suppose Emacs changes the window-start point, and then
redraws each and every screen line from top of the window to its
bottom -- do you consider this "real scrolling"?  It may well appear
to the user as scrolling, since every line moves up or down by the
same number of screen lines.

> > > And tell me that a solution without scrolling involved
> > > is not possible, and why, or why you think that scrolling is
> > > unavoidable.  You said it can't be avoided when we do something in the
> > > display engine.
> >
> > That's not what I said.  Quote:
> >
> >   It isn't unavoidable, but doing something more sophisticated would
> >   call for a significantly more complex code.  The current solution for
> >   when this variable is set and the window-start point is invisible is
> >   very simple: we recenter the window around point.  The recentering
> >   method is safe, because it always succeeds, which is why it also
> >   serves as the fallback method of finding the suitable window-start for
> >   redisplaying a window.  The code that implements the recentering was
> >   already there, so the introduction of this new variable boiled down to
> >   recognizing the conditions under which we should go directly to
> >   recentering, bypassing all the other methods.
> 
> Recenter means actual, not only per definition scroll - right?

No, not necessarily.  Recentering in this context means Emacs
calculates a new window-start position such that the line showing
point will be centered in the window, and then redisplays the window
using that window-start position.  _How_ it redisplays the window is a
separate question -- the display engine has several optimizations it
will try to make redisplay as fast as possible, and some of these
optimizations can be considered "real scrolling" (according to my
interpretation of that term).

> > I need a more concrete proposal to answer these questions.  IOW, I
> > don't think I understand what kind of solution do you have in mind
> > here.
> 
> I didn't make one since my knowledge here in inferior.  Personally I
> would adjust window-start from a hook and call `redisplay', which is
> probably not the best solution.

The question is how would you compute the new window-start?  What
happens after that, i.e. how the call to 'redisplay' redraws the
window given a specific window-start position, you cannot control --
it could very well decide it wants to scroll the window.  It's no
accident that scroll commands in Emacs do precisely that: they compute
a suitable window-start, and then let the display engine do its job
under the restriction that it shall abide by that window-start
position.





  reply	other threads:[~2022-02-28 13:10 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-09  9:13 bug#14582: 24.3.50.1; Strange overlay behavior, when window-start is inside an overlay E Sabof
2013-06-09 17:06 ` Eli Zaretskii
2013-06-09 17:37   ` E Sabof
2013-06-09 17:52     ` Eli Zaretskii
2013-06-09 18:16       ` E Sabof
2013-06-09 18:25         ` Eli Zaretskii
2013-06-09 18:40           ` E Sabof
2013-06-09 18:49             ` E Sabof
2022-01-30 21:37             ` Lars Ingebrigtsen
2022-01-31  0:36               ` Michael Heerdegen
2022-01-31 14:57                 ` Eli Zaretskii
2022-01-31 18:42                   ` Michael Heerdegen
2022-01-31 19:08                     ` Eli Zaretskii
2022-02-01  3:03                       ` Michael Heerdegen
2022-02-01 18:18                         ` Eli Zaretskii
2022-02-02  1:12                           ` Michael Heerdegen
2022-02-02  3:34                             ` Eli Zaretskii
2022-02-02  4:02                               ` Michael Heerdegen
2022-02-02 12:31                                 ` Eli Zaretskii
2022-02-03 17:40                                   ` Eli Zaretskii
2022-02-04  1:37                                     ` Michael Heerdegen
2022-02-04 13:56                                       ` Eli Zaretskii
2022-02-06  2:54                                         ` Michael Heerdegen
2022-02-06 10:28                                           ` Eli Zaretskii
2022-02-08  0:29                                             ` Michael Heerdegen
2022-02-08  3:34                                               ` Eli Zaretskii
2022-02-08  4:05                                                 ` Michael Heerdegen
2022-02-08 12:23                                                   ` Eli Zaretskii
2022-02-09  0:20                                                     ` Michael Heerdegen
2022-02-09  3:53                                                     ` Michael Heerdegen
2022-02-09 13:47                                                       ` Eli Zaretskii
2022-02-10  1:07                                                         ` Michael Heerdegen
2022-02-10  6:15                                                           ` Eli Zaretskii
2022-02-11  4:42                                                             ` Michael Heerdegen
2022-02-11  8:46                                                               ` Eli Zaretskii
2022-02-12  0:25                                                                 ` Michael Heerdegen
2022-02-12  7:28                                                                   ` Eli Zaretskii
2022-02-12 22:53                                                                     ` Michael Heerdegen
2022-02-13 11:43                                                                       ` Eli Zaretskii
2022-02-27  3:54                                                                         ` Michael Heerdegen
2022-02-27  8:08                                                                           ` Eli Zaretskii
2022-02-27 23:19                                                                             ` Michael Heerdegen
2022-02-28 13:10                                                                               ` Eli Zaretskii [this message]
2022-01-31 15:30                 ` Lars Ingebrigtsen

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=83r17nm91j.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=14582@debbugs.gnu.org \
    --cc=esabof@gmail.com \
    --cc=larsi@gnus.org \
    --cc=michael_heerdegen@web.de \
    /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).