From: Eli Zaretskii <eliz@gnu.org>
To: gregory@heytings.org, Stefan Monnier <monnier@iro.umontreal.ca>
Cc: 56682@debbugs.gnu.org
Subject: bug#56682: feature/improved-locked-narrowing 9dee6df39c: Reworked locked narrowing.
Date: Thu, 12 Jan 2023 11:34:32 +0200 [thread overview]
Message-ID: <83eds0ksev.fsf@gnu.org> (raw)
In-Reply-To: <jwvcz80rbq6.fsf-monnier+emacs@gnu.org> (bug-gnu-emacs@gnu.org)
> Cc: 56682@debbugs.gnu.org
> Date: Fri, 30 Dec 2022 13:51:19 -0500
> From: Stefan Monnier via "Bug reports for GNU Emacs,
> the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
>
> > You have to know where your function is called and by which caller
> > a lock was placed.
>
> That doesn't seem sufficient, because you need to additionally find the
> name of the tag they used. AFAICT currently you can only find that out
> by looking at the code. I think the names should be documented
> somewhere else than just in the code itself.
>
> > Currently there are three such tags (and I don't expect more
> > tags in core): fontification-functions, pre-command-hook and
> > post-command-hook.
>
> These names seem wrong: I don't think the tag should say when/where the
> lock happened to be placed, but what caused it to be placed. IIUC all
> three cases up there share the same reason: overly long lines.
> So I think they should all use the same tag which could be something
> like `long-lines` or maybe they should use names such as
> `long-line-threshold` and `large-hscroll-threshold` to record precisely
> the cause for the lock.
>
> >> Looking more at the code, I have another question: why is
> >> `narrowing_locks` a global alist indexed by buffers, instead of being
> >> a buffer-local variable?
> >
> > For efficiency reasons. If it were a buffer-local variable,
> > reset_outermost_narrowings, which is called by redisplay_internal, would
> > have to consider all buffers, which would become unnecessarily slow with
> > many (say 1000) buffers. With a global alist, only the (few) buffers in
> > which narrowing locks are actually in effect are considered.
>
> Then I suggest you put a comment to that effect in the code. I also
> can't understand why we need `xdisp.c` to call
> `reset_outermost_narrowings`. I see you tried to explain it in the
> doc-comment of the function but I failed to understand the explanation.
> Maybe you could extend the comment by pointing to a very concrete
> example (or maybe a discussion on the mailing list)?
>
> Another problem I see with it is that it seems to presume a very
> particular use of locked narrowing (such as the one installed by the
> long-lines code), whereas other uses of locked narrowing might not want
> to be reset during redisplay.
>
> Similarly the doc-comment of `narrowing_lock_get_bound` talks about
> "bounds ... that are visible on display", but that function doesn't know
> what bounds are visible on display, actually. The interaction with
> what's visible on display completely depends on when/where it's called
> and when/where locks are installed. Could you try and clarify the
> doc-comment to say what the function actually does, and then separately
> explain how it *may* relate with "what's visible on display" and under
> which assumption this relation may hold?
> IIUC what the function does when OUTERMOST is true is return the
> narrowing that was in effect when the first lock was installed, right?
Gregory, any progress with documenting this?
next prev parent reply other threads:[~2023-01-12 9:34 UTC|newest]
Thread overview: 101+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <166939872890.18950.12581667269687468681@vcs2.savannah.gnu.org>
[not found] ` <20221125175209.51166C004B6@vcs2.savannah.gnu.org>
[not found] ` <jwvk028zxbs.fsf-monnier+emacs@gnu.org>
2022-12-30 16:38 ` bug#56682: feature/improved-locked-narrowing 9dee6df39c: Reworked locked narrowing Gregory Heytings
2022-12-30 16:41 ` Gregory Heytings
2022-12-30 17:01 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-12-30 17:25 ` Gregory Heytings
2022-12-30 18:51 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-01-12 9:34 ` Eli Zaretskii [this message]
2023-01-14 21:38 ` Gregory Heytings
2023-01-26 7:29 ` Eli Zaretskii
2023-01-28 15:11 ` Gregory Heytings
2023-01-28 15:36 ` Eli Zaretskii
2023-01-30 9:00 ` Gregory Heytings
2023-01-30 13:07 ` Eli Zaretskii
2023-01-30 15:03 ` Gregory Heytings
2023-01-30 17:11 ` Eli Zaretskii
2023-01-30 17:24 ` Juri Linkov
2023-01-30 17:52 ` Eli Zaretskii
2023-01-30 17:56 ` Juri Linkov
2023-01-30 18:05 ` Eli Zaretskii
2023-01-30 18:56 ` Dmitry Gutov
2023-01-30 19:02 ` Eli Zaretskii
2023-01-30 21:07 ` Dmitry Gutov
2023-01-30 21:49 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-01-30 23:29 ` Dmitry Gutov
2023-01-31 12:14 ` Eli Zaretskii
2023-01-31 15:58 ` Dmitry Gutov
2023-01-31 15:17 ` Gregory Heytings
2023-01-31 16:03 ` Dmitry Gutov
2023-01-31 15:14 ` Gregory Heytings
2023-01-31 16:25 ` Dmitry Gutov
2023-01-31 21:46 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-01-31 22:25 ` Dmitry Gutov
2023-02-01 18:55 ` Eli Zaretskii
2023-02-01 20:46 ` dick
2023-02-01 22:42 ` Gregory Heytings
2023-02-02 6:43 ` Eli Zaretskii
2023-02-03 0:20 ` Gregory Heytings
2023-02-03 7:39 ` Eli Zaretskii
2023-02-03 22:12 ` Gregory Heytings
2023-02-04 6:32 ` Eli Zaretskii
2023-02-09 1:57 ` Gregory Heytings
2023-02-09 7:01 ` Eli Zaretskii
2023-02-09 10:33 ` Gregory Heytings
2023-02-09 14:26 ` Eli Zaretskii
2023-02-09 14:39 ` Gregory Heytings
2023-02-09 15:46 ` Eli Zaretskii
2023-02-09 16:11 ` Gregory Heytings
2023-02-09 17:02 ` Eli Zaretskii
2023-02-09 17:44 ` Juri Linkov
2023-02-09 20:47 ` Gregory Heytings
2023-02-09 22:46 ` Drew Adams
2023-02-09 23:06 ` Drew Adams
2023-02-13 18:11 ` Eli Zaretskii
2023-02-10 7:44 ` Eli Zaretskii
2023-02-10 23:05 ` Gregory Heytings
2023-02-09 17:31 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-02-09 17:43 ` Eli Zaretskii
2023-02-09 17:57 ` Juri Linkov
2023-02-10 16:46 ` Andrea Corallo
2023-02-11 7:18 ` Eli Zaretskii
2023-02-13 11:00 ` Gregory Heytings
2023-02-13 18:10 ` Eli Zaretskii
2023-02-14 10:30 ` Gregory Heytings
2023-02-14 14:37 ` Eli Zaretskii
2023-02-14 14:59 ` Gregory Heytings
2023-02-14 16:55 ` Eli Zaretskii
2023-02-14 22:50 ` Gregory Heytings
2023-02-15 12:36 ` Eli Zaretskii
2023-02-15 13:37 ` Gregory Heytings
2023-02-15 14:10 ` Eli Zaretskii
2023-02-15 14:37 ` Gregory Heytings
2023-02-18 23:12 ` Gregory Heytings
2023-02-19 6:29 ` Eli Zaretskii
[not found] ` <a9b3c867-aa6a-2979-a83-dd700e985c9@heytings.org>
2023-03-29 14:52 ` Gregory Heytings
2023-04-01 0:27 ` Gregory Heytings
2023-04-01 5:42 ` Eli Zaretskii
2023-04-01 9:04 ` Gregory Heytings
2023-04-01 11:11 ` Eli Zaretskii
2023-04-01 14:26 ` Gregory Heytings
2023-04-01 15:09 ` Eli Zaretskii
2023-04-01 15:41 ` Gregory Heytings
2023-04-01 16:21 ` Eli Zaretskii
2023-04-01 17:01 ` Gregory Heytings
2023-04-01 17:12 ` Eli Zaretskii
2023-04-01 21:56 ` Gregory Heytings
2023-04-02 5:16 ` Eli Zaretskii
2023-04-04 2:55 ` Richard Stallman
2023-04-04 10:50 ` Eli Zaretskii
[not found] ` <ccfcc63b8da74932424b@heytings.org>
2023-05-04 5:31 ` Eli Zaretskii
2023-05-04 15:45 ` Gregory Heytings
2023-05-05 15:26 ` Eli Zaretskii
2023-05-05 21:29 ` Gregory Heytings
2023-05-06 6:26 ` Eli Zaretskii
2023-05-09 21:48 ` Gregory Heytings
2023-05-10 14:00 ` Eli Zaretskii
2023-05-12 11:12 ` Eli Zaretskii
2023-05-12 12:50 ` Gregory Heytings
2023-05-12 22:18 ` Gregory Heytings
2023-05-13 6:41 ` Eli Zaretskii
2023-01-30 14:46 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-01-30 15:05 ` Gregory Heytings
2023-01-30 15:08 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
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=83eds0ksev.fsf@gnu.org \
--to=eliz@gnu.org \
--cc=56682@debbugs.gnu.org \
--cc=gregory@heytings.org \
--cc=monnier@iro.umontreal.ca \
/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).