From: Po Lu <luangruo@yahoo.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: emacs-devel@gnu.org
Subject: Re: Allowing point to be outside the window?
Date: Thu, 09 Dec 2021 20:19:13 +0800 [thread overview]
Message-ID: <874k7ias3i.fsf@yahoo.com> (raw)
In-Reply-To: <835yryuhmo.fsf@gnu.org> (Eli Zaretskii's message of "Thu, 09 Dec 2021 13:45:03 +0200")
Eli Zaretskii <eliz@gnu.org> writes:
> Once again, it's hard to understand the main ideas behind the
> feature. You explained above when it brings point into the view, but
> what I'm looking for is an explanation for how to modify
> redisplay_window when this feature is turned ON, without losing too
> much of the existing redisplay functionality.
The idea is to prevent redisplay_window from entering `recenter' unless
`w->force_start' or a few other conditions are true, and to not display
the phys cursor if its position is unknown. A large part of
`try_scrolling' is also disabled, but I think I know how to turn it on
now.
> Also, a large part of the patch seems to change mainly whitespace, so
> please use the -w switch to show diffs ignoring the whitespace
> changes, because otherwise it's very hard to spot the real changes.
Thanks, I will keep that in mind in the future.
> A couple of comments below:
>> --- a/src/window.c
>> +++ b/src/window.c
>> @@ -5576,7 +5576,8 @@ window_scroll_pixel_based (Lisp_Object window, int n, bool whole, bool noerror)
> It seems you made changes for GUI scrolling, but not for TTY
> scrolling? Is this feature supposed to be disabled on TTY frames?
No, it's something I plan to do in a while, but not yet.
>> @@ -17768,6 +17770,9 @@ try_scrolling (Lisp_Object window, bool just_this_one_p,
>> else
>> scroll_max = 0;
>>
>> + if (!keep_point_visible)
>> + goto out;
>> +
>> too_near_end:
> I'm confused here. This bypasses all of try_scrolling's code, which
> can select a new window-start because, for example, point moved out of
> the visible portion of the window. Does this mean that when
> this feature is turned ON, scrolling of the window in these cases is
> no longer supported? For example, let's say I pressed C-n and that
> moved point below the window's end (with the default zero value of
> scroll-margin) -- does it mean the window will not scroll, leaving
> point invisible in this case?
It does not: it enters the code under the `recenter' label instead,
which causes point to be displayed at the center of the screen.
But the behavior is very different between that and the code in
try_scrolling, so I think it should be turned on if the numeric value of
point has changed, as we do with the recenter label.
>> @@ -18183,6 +18190,10 @@ try_cursor_movement (Lisp_Object window, struct text_pos startp,
>> return rc;
>> #endif
>>
>> + /* TODO: enable this optimization. */
>> + if (!keep_point_visible)
>> + return CURSOR_MOVEMENT_CANNOT_BE_USED;
> Likewise here: you are disabling one of the more important redisplay
> optimizations, which minimizes redisplay work when the user just move
> point a little ways. Can you tell why this needs to be disabled under
> the new behavior? it seems to be unrelated, because the optimization
> only does its thing when point didn't leave the window.
I disabled all the redisplay optimizations when first developing this
feature, so I could turn them on one-by-one to see if they would cause
any problems.
This optimization works fine however, so it can be enabled.
> This will have to go eventually, as this trace is not useful in
> general.
Thanks, I'll keep that in mind.
> This optimization also doesn't necessarily have anything to do with
> point being outside of the window.
That's because I haven't tested to see if it works yet.
Thanks.
next prev parent reply other threads:[~2021-12-09 12:19 UTC|newest]
Thread overview: 111+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <87ilwd7zaq.fsf.ref@yahoo.com>
2021-11-28 3:07 ` Allowing point to be outside the window? Po Lu
2021-11-28 8:03 ` Eli Zaretskii
2021-11-28 8:13 ` Po Lu
2021-11-28 8:41 ` Eli Zaretskii
2021-11-28 12:47 ` Po Lu
2021-11-28 12:58 ` Eli Zaretskii
2021-11-28 13:10 ` Po Lu
2021-11-28 13:44 ` Eli Zaretskii
2021-11-29 1:47 ` Po Lu
2021-11-29 13:00 ` Eli Zaretskii
2021-11-29 13:22 ` Po Lu
2021-11-29 13:43 ` Eli Zaretskii
2021-11-30 1:40 ` Po Lu
2021-11-30 16:49 ` [External] : " Drew Adams
2021-11-30 17:26 ` Eli Zaretskii
2021-11-30 18:10 ` Lars Ingebrigtsen
2021-11-30 18:32 ` Eli Zaretskii
2021-11-30 18:49 ` Stefan Kangas
2021-11-30 19:21 ` Eli Zaretskii
2021-11-30 20:57 ` Drew Adams
2021-11-30 23:41 ` Daniel Martín
2021-12-01 8:30 ` martin rudalics
2021-12-01 9:10 ` Juri Linkov
2021-11-30 23:20 ` Stefan Monnier
2021-12-04 11:18 ` Po Lu
2021-12-04 12:55 ` Eli Zaretskii
2021-12-04 13:13 ` Po Lu
2021-12-04 16:24 ` Eli Zaretskii
2021-12-05 0:40 ` Po Lu
2021-12-04 17:15 ` Eli Zaretskii
2021-12-05 0:45 ` Po Lu
2021-12-05 9:03 ` Eli Zaretskii
2021-12-06 2:11 ` Po Lu
2021-12-06 14:13 ` Eli Zaretskii
2021-12-07 2:18 ` Po Lu
2021-12-07 13:42 ` Eli Zaretskii
2021-12-08 1:17 ` Po Lu
2021-12-08 17:14 ` Eli Zaretskii
2021-12-09 0:23 ` Po Lu
2021-12-09 8:02 ` Eli Zaretskii
2021-12-09 9:22 ` Po Lu
2021-12-09 10:02 ` Eli Zaretskii
2021-12-25 6:45 ` Po Lu
2021-12-25 7:07 ` Eli Zaretskii
2022-02-06 7:22 ` Po Lu
2022-02-06 11:34 ` Eli Zaretskii
2022-02-06 11:46 ` Po Lu
2022-02-06 11:55 ` Eli Zaretskii
2022-02-06 12:21 ` Po Lu
2022-02-06 16:15 ` Eli Zaretskii
2022-02-07 1:21 ` Po Lu
2022-02-07 7:21 ` Po Lu
2022-02-07 13:41 ` Eli Zaretskii
2022-02-07 13:57 ` Po Lu
2022-02-07 14:24 ` Eli Zaretskii
2022-02-08 0:58 ` Po Lu
2022-02-08 17:08 ` Eli Zaretskii
2022-02-09 1:57 ` Po Lu
2022-02-10 13:04 ` Eli Zaretskii
2022-02-10 13:09 ` Po Lu
2021-12-09 11:45 ` Eli Zaretskii
2021-12-09 12:19 ` Po Lu [this message]
2021-12-09 12:45 ` Eli Zaretskii
2021-12-04 13:00 ` dick
2021-12-04 13:14 ` tomas
2021-12-04 13:19 ` Po Lu
2021-12-04 13:41 ` Eli Zaretskii
2021-12-05 0:46 ` Po Lu
2021-12-05 7:12 ` Eli Zaretskii
2021-12-05 7:16 ` Po Lu
2021-12-05 8:48 ` Eli Zaretskii
2021-12-05 9:15 ` Po Lu
2021-12-05 9:25 ` Eli Zaretskii
2021-12-05 9:31 ` Po Lu
2021-12-05 10:34 ` Eli Zaretskii
2021-12-05 10:37 ` Po Lu
2021-12-04 14:17 ` dick
2021-12-04 16:33 ` Eli Zaretskii
2021-12-04 17:13 ` dick
2021-12-05 0:48 ` Po Lu
2021-11-28 14:03 ` Alan Mackenzie
2021-11-28 14:28 ` Eric S Fraga
2021-11-28 14:39 ` Eli Zaretskii
2021-11-28 16:55 ` Eric S Fraga
2021-11-28 14:42 ` dick
2021-11-28 15:39 ` Kévin Le Gouguec
2021-11-28 15:45 ` Eli Zaretskii
2021-11-28 17:14 ` Kévin Le Gouguec
2021-11-28 16:59 ` Eric S Fraga
2021-11-28 17:30 ` Kévin Le Gouguec
2021-11-29 0:34 ` Dmitry Gutov
2021-11-29 0:34 ` Po Lu
2021-12-08 1:45 ` John Ankarström
2021-12-08 12:45 ` Eli Zaretskii
2021-12-08 13:33 ` John Ankarström
2021-12-08 13:38 ` Po Lu
2021-12-08 13:52 ` John Ankarström
2021-12-08 14:26 ` Eli Zaretskii
2021-12-08 16:57 ` Stefan Monnier
2021-12-08 19:29 ` Yuri Khan
2021-12-09 0:16 ` Po Lu
2021-12-08 19:21 ` Rudolf Schlatte
2021-12-08 19:56 ` Juri Linkov
2021-12-08 20:05 ` André A. Gomes
2021-12-08 20:31 ` Linux console scrollback [ Was: Allowing point to be outside the window? ] Alan Mackenzie
2021-12-09 0:17 ` Allowing point to be outside the window? Po Lu
2021-12-08 22:25 ` Kévin Le Gouguec
2021-12-08 23:17 ` John Ankarström
[not found] <9603C99D-97E7-4285-A1C1-022191B6F5CC@univie.ac.at>
2021-12-08 18:43 ` Konrad Podczeck
2021-12-08 20:47 ` John Ankarström
2021-12-09 15:34 Konrad Podczeck
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=874k7ias3i.fsf@yahoo.com \
--to=luangruo@yahoo.com \
--cc=eliz@gnu.org \
--cc=emacs-devel@gnu.org \
/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).