From: Eli Zaretskii <eliz@gnu.org>
To: Gregory Heytings <gregory@heytings.org>
Cc: larsi@gnus.org, 56393@debbugs.gnu.org
Subject: bug#56393: Actually fix the long lines display bug
Date: Thu, 07 Jul 2022 13:10:49 +0300 [thread overview]
Message-ID: <83edyx5j2u.fsf@gnu.org> (raw)
In-Reply-To: <3ffab19196bc0451adb6@heytings.org> (message from Gregory Heytings on Thu, 07 Jul 2022 08:23:11 +0000)
> Date: Thu, 07 Jul 2022 08:23:11 +0000
> From: Gregory Heytings <gregory@heytings.org>
> cc: larsi@gnus.org, 56393@debbugs.gnu.org
>
> > C-p takes an inordinate amount of time in those cases because it calls
> > functions of the display engine (see vertical-motion). Limiting the
> > display code to some small enough region of the buffer will speed that
> > up as well, since it's the same code in both cases. The somewhat tricky
> > part with the likes of C-p is where and how to compute the restriction.
> >
>
> Okay. Can I try to do this myself, or are you already working on it, if
> not already polishing your code?
I'm not working on this (unless you call this discussion and trying
the branch "work" ;-).
If you want to try this, here are some thoughts which may or may not
prove useful:
. for actual redisplay, the natural place for checking whether we
need to "narrow" is at the beginning of redisplay_window, where
you can check the window's buffer; this might need to be rechecked
in the few places (maybe just one) where redisplay moves point
. to compute a good value for "narrowing", multiply the number of
rows of the window's glyph matrix by the number of glyphs in each
row, then by some small factor (like 2 or 3)
. the way to "narrow" for display code only is to replace BEGV and
ZV with new macros, say DBEGV and DZV, which look at separate
variables, possibly new members in 'struct window', if those are
set; when the above-mentioned check determines that "narrowing" is
needed, set them accordingly
. a good place to reset these new members of 'struct window' is in
mark_window_display_accurate_1, when the window's display is
marked as "accurate"
. various calls to the likes of Fnext_single_property_change in the
display code will need to specify explicit limits for the search,
using DBEGV and DZV, instead of falling back on BEGV and ZV that
are already set
I don't yet have a good idea about where to check whether "narrowing"
is necessary for commands like C-n and C-v, but maybe look where I set
the display_working_on_window_p flag as guideline. Another idea would
be to use those new members in 'struct window', but then (a) it is
less clear when to reset them, and (b) some commands might go far
away, thus making those values no longer pertinent.
Let me know if you need help with display code internals.
Thanks.
next prev parent reply other threads:[~2022-07-07 10:10 UTC|newest]
Thread overview: 205+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-05 8:49 bug#56393: Actually fix the long lines display bug Gregory Heytings
2022-07-05 9:28 ` Gregory Heytings
2022-07-05 9:58 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-07-05 10:17 ` Gregory Heytings
2022-07-05 11:24 ` Lars Ingebrigtsen
2022-07-05 12:16 ` Gregory Heytings
2022-07-05 12:59 ` Gerd Möllmann
2022-07-07 11:29 ` Gerd Möllmann
2022-07-07 13:36 ` Eli Zaretskii
2022-07-07 14:10 ` Eli Zaretskii
2022-07-08 5:49 ` Gerd Möllmann
2022-07-08 6:55 ` Eli Zaretskii
2022-07-08 7:01 ` Gerd Möllmann
2022-07-08 21:41 ` Gregory Heytings
2022-07-09 7:03 ` Eli Zaretskii
2022-07-09 8:56 ` Gregory Heytings
2022-07-09 9:20 ` Eli Zaretskii
2022-07-09 9:23 ` Eli Zaretskii
2022-07-09 9:32 ` Gregory Heytings
2022-07-09 9:30 ` Eli Zaretskii
2022-07-09 9:49 ` Gregory Heytings
2022-07-09 10:01 ` Eli Zaretskii
2022-07-09 10:50 ` Gregory Heytings
2022-07-09 11:16 ` Eli Zaretskii
2022-07-09 11:48 ` Gregory Heytings
2022-07-09 11:59 ` Eli Zaretskii
2022-07-09 12:07 ` Gregory Heytings
2022-07-09 12:34 ` Eli Zaretskii
2022-07-09 12:36 ` Gregory Heytings
2022-07-09 12:09 ` Ihor Radchenko
2022-07-09 12:37 ` Eli Zaretskii
2022-07-09 10:54 ` Eli Zaretskii
2022-07-09 11:09 ` Eli Zaretskii
2022-07-09 11:12 ` Gregory Heytings
2022-07-09 11:20 ` Gregory Heytings
2022-07-09 12:29 ` Lars Ingebrigtsen
2022-07-09 12:38 ` Gregory Heytings
2022-07-16 19:39 ` Gregory Heytings
2022-07-17 15:21 ` Eli Zaretskii
2022-07-17 15:37 ` Gregory Heytings
2022-07-17 16:00 ` Eli Zaretskii
2022-07-18 10:19 ` Gregory Heytings
2022-07-18 12:20 ` Eli Zaretskii
2022-07-18 12:58 ` Gregory Heytings
2022-07-18 13:33 ` Eli Zaretskii
2022-07-18 14:00 ` Gregory Heytings
2022-07-18 14:10 ` Gregory Heytings
2022-07-18 14:22 ` Eli Zaretskii
2022-07-18 14:34 ` Gregory Heytings
2022-07-18 16:06 ` Gregory Heytings
2022-07-18 16:21 ` Gregory Heytings
2022-07-18 17:04 ` Eli Zaretskii
2022-07-18 17:07 ` Gregory Heytings
2022-07-18 17:09 ` Eli Zaretskii
2022-07-18 18:33 ` Gregory Heytings
2022-07-18 16:48 ` Eli Zaretskii
2022-07-18 17:11 ` Gregory Heytings
2022-07-18 17:19 ` Eli Zaretskii
2022-07-18 18:17 ` Gregory Heytings
2022-07-18 18:26 ` Gregory Heytings
2022-07-18 18:56 ` Eli Zaretskii
2022-07-18 20:14 ` Gregory Heytings
2022-07-19 2:34 ` Eli Zaretskii
2022-07-19 5:39 ` Gregory Heytings
2022-07-19 12:00 ` Eli Zaretskii
2022-07-19 12:07 ` Gerd Möllmann
2022-07-19 12:49 ` Gregory Heytings
2022-07-19 13:16 ` Eli Zaretskii
2022-07-19 13:42 ` Gregory Heytings
2022-07-19 13:56 ` Eli Zaretskii
2022-07-19 14:06 ` Gregory Heytings
2022-07-19 14:15 ` Lars Ingebrigtsen
2022-07-19 14:24 ` Gregory Heytings
[not found] ` <364167b2-83e-c5af-1981-221d53e33ce6@heytings.org>
2022-07-19 21:55 ` Gregory Heytings
2022-07-19 14:19 ` Eli Zaretskii
2022-07-19 14:33 ` Gregory Heytings
2022-07-19 16:14 ` Eli Zaretskii
2022-07-19 21:40 ` Gregory Heytings
2022-07-20 12:07 ` Eli Zaretskii
2022-07-20 13:06 ` Gregory Heytings
2022-07-20 13:23 ` Eli Zaretskii
2022-07-20 13:42 ` Gregory Heytings
2022-07-20 15:54 ` Eli Zaretskii
2022-07-20 17:33 ` Gregory Heytings
2022-07-21 6:32 ` Eli Zaretskii
2022-07-21 7:39 ` Gregory Heytings
2022-07-21 7:49 ` Gregory Heytings
2022-07-21 8:00 ` Eli Zaretskii
2022-07-21 7:56 ` Eli Zaretskii
2022-07-21 8:20 ` Gregory Heytings
2022-07-21 8:58 ` Eli Zaretskii
2022-07-21 9:00 ` Gregory Heytings
2022-07-21 9:18 ` Lars Ingebrigtsen
2022-07-21 11:56 ` Gregory Heytings
2022-07-21 12:22 ` Eli Zaretskii
[not found] ` <bce7aad8-6872-97ec-77ac-6a593ff66a27@heytings.org>
2022-07-19 12:57 ` Gregory Heytings
2022-07-21 9:42 ` Eli Zaretskii
2022-07-08 5:47 ` Gerd Möllmann
2022-07-08 5:56 ` Eli Zaretskii
2022-07-08 6:25 ` Gerd Möllmann
2022-07-08 7:19 ` Eli Zaretskii
2022-07-07 18:38 ` Gregory Heytings
2022-07-08 5:59 ` Gerd Möllmann
2022-07-05 12:54 ` Eli Zaretskii
2022-07-05 13:53 ` Gregory Heytings
2022-07-05 14:14 ` Eli Zaretskii
2022-07-05 14:30 ` Gregory Heytings
2022-07-05 15:21 ` Robert Pluim
2022-07-05 15:46 ` Eli Zaretskii
2022-07-05 16:21 ` Gregory Heytings
2022-07-05 16:34 ` Eli Zaretskii
2022-07-05 23:09 ` Lars Ingebrigtsen
2022-07-05 23:12 ` Gregory Heytings
2022-07-06 12:29 ` Eli Zaretskii
2022-07-06 13:01 ` Gregory Heytings
2022-07-06 13:25 ` Eli Zaretskii
2022-07-06 13:56 ` Gregory Heytings
2022-07-06 14:09 ` Eli Zaretskii
2022-07-06 14:41 ` Gregory Heytings
2022-07-06 16:19 ` Eli Zaretskii
2022-07-06 16:57 ` Gregory Heytings
2022-07-06 17:50 ` Eli Zaretskii
2022-07-07 0:28 ` Ihor Radchenko
2022-07-07 5:43 ` Eli Zaretskii
2022-07-07 0:38 ` Gregory Heytings
2022-07-07 5:53 ` Eli Zaretskii
2022-07-07 8:23 ` Gregory Heytings
2022-07-07 10:10 ` Eli Zaretskii [this message]
2022-07-07 18:08 ` Gregory Heytings
2022-07-09 6:20 ` Eli Zaretskii
2022-07-09 8:24 ` Gregory Heytings
2022-07-09 9:13 ` Eli Zaretskii
2022-07-09 9:39 ` Gregory Heytings
2022-07-09 9:59 ` Eli Zaretskii
2022-07-09 10:20 ` Gregory Heytings
2022-07-09 10:41 ` Eli Zaretskii
2022-07-09 11:09 ` Gregory Heytings
2022-07-09 11:18 ` Eli Zaretskii
2022-07-09 11:38 ` Gregory Heytings
2022-07-09 11:48 ` Eli Zaretskii
2022-07-09 12:01 ` Gregory Heytings
2022-07-09 12:24 ` Eli Zaretskii
2022-07-09 12:31 ` Gregory Heytings
2022-07-07 14:25 ` Drew Adams
2022-07-07 15:58 ` Eli Zaretskii
2022-07-07 17:50 ` Eli Zaretskii
2022-07-07 18:46 ` Gregory Heytings
2022-07-07 19:05 ` Eli Zaretskii
2022-07-07 18:49 ` Gregory Heytings
2022-07-06 13:34 ` Stefan Kangas
2022-07-06 14:10 ` Gregory Heytings
2022-07-06 14:37 ` Stefan Kangas
2022-07-06 14:47 ` Gregory Heytings
2022-07-06 15:03 ` Stefan Kangas
2022-07-06 15:31 ` Gregory Heytings
2022-07-06 15:50 ` Eli Zaretskii
2022-07-05 23:10 ` Gregory Heytings
2022-07-06 9:49 ` Gerd Möllmann
2022-07-06 10:21 ` Gregory Heytings
2022-07-06 11:31 ` Lars Ingebrigtsen
2022-07-06 12:13 ` Gregory Heytings
2022-07-06 12:44 ` Gregory Heytings
2022-07-07 7:48 ` Lars Ingebrigtsen
2022-07-06 12:50 ` Eli Zaretskii
2022-07-06 13:16 ` Phil Sainty
2022-07-06 13:45 ` Gregory Heytings
2022-07-06 14:05 ` Phil Sainty
2022-07-06 12:39 ` Eli Zaretskii
2022-07-06 13:06 ` Gregory Heytings
2022-07-06 13:32 ` Eli Zaretskii
2022-07-06 14:05 ` Gregory Heytings
2022-07-06 14:13 ` Eli Zaretskii
2022-07-06 14:27 ` Gregory Heytings
2022-07-06 16:53 ` Eli Zaretskii
2022-07-06 17:17 ` Gregory Heytings
2022-07-06 17:30 ` Eli Zaretskii
2022-07-06 21:53 ` Gregory Heytings
2022-07-07 7:47 ` Lars Ingebrigtsen
2022-07-18 9:44 ` bug#56393: Soon also looking at your branch Gerd Möllmann
2022-07-18 10:11 ` Michael Albinus
2022-07-18 10:26 ` Gerd Möllmann
2022-07-18 11:43 ` Michael Albinus
2022-07-18 12:15 ` Gerd Möllmann
2022-07-18 12:19 ` Michael Albinus
2022-07-18 10:49 ` Gregory Heytings
2022-07-19 8:21 ` bug#56393: Actually fix the long lines display bug Gerd Möllmann
2022-07-19 8:53 ` Gregory Heytings
2022-07-19 8:58 ` Gregory Heytings
2022-07-19 9:31 ` bug#56393: Resetting long_line_optimization_p to 0 Gerd Möllmann
2022-07-19 9:51 ` Gregory Heytings
2022-07-19 11:20 ` Gerd Möllmann
2022-07-20 6:58 ` bug#56393: Actually fix the long lines display bug Gerd Möllmann
2022-07-20 9:13 ` Gregory Heytings
2022-07-19 12:21 ` Eli Zaretskii
2022-07-19 9:17 ` bug#56393: Auto narrowing autside of redisplay Gerd Möllmann
2022-07-19 9:51 ` Gregory Heytings
2022-07-19 10:56 ` bug#56393: Actually fix the long lines display bug Gerd Möllmann
2022-07-19 9:25 ` bug#56393: Turn on narrowing in redisplay_window Gerd Möllmann
2022-07-19 9:52 ` Gregory Heytings
2022-07-19 11:26 ` Gerd Möllmann
2022-07-19 12:43 ` Eli Zaretskii
2022-07-20 6:30 ` bug#56393: Actually fix the long lines display bug Gerd Möllmann
2022-07-20 9:08 ` Gregory Heytings
2022-07-19 12:48 ` Eli Zaretskii
2022-07-20 6:32 ` Gerd Möllmann
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=83edyx5j2u.fsf@gnu.org \
--to=eliz@gnu.org \
--cc=56393@debbugs.gnu.org \
--cc=gregory@heytings.org \
--cc=larsi@gnus.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).