unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Alan Mackenzie <acm@muc.de>
To: Eli Zaretskii <eliz@gnu.org>
Cc: emacs-devel@gnu.org
Subject: Re: bug-reference-prog-mode slows down CC Mode's scrolling by ~7%
Date: Wed, 1 Sep 2021 19:19:07 +0000	[thread overview]
Message-ID: <YS/SK+EBe3KE92dk@ACM> (raw)
In-Reply-To: <83lf4gp2u6.fsf@gnu.org>

Hello, Eli.

On Wed, Sep 01, 2021 at 21:28:49 +0300, Eli Zaretskii wrote:
> > Date: Wed, 1 Sep 2021 18:20:25 +0000
> > Cc: emacs-devel@gnu.org
> > From: Alan Mackenzie <acm@muc.de>

> > > Then I think the easiest fix is to get bug-reference-prog-mode
> > > return a suitable value, or wrap it in a function that would.
> > > Every function that puts itself on jit-lock-functions without
> > > actually fontifying anything should return BOB..EOB as the region
> > > it fontified, right?

> > I'm not sure that's the right fix.  If font-lock mode were disabled,
> > say, bug-reference-fontify would be the only function on
> > jit-lock-functions.

> But that never happens, does it?

I just did M-x font-lock-mode.  bug-reference-fontify was the only thing
left in jit-lock-functions.

> Or if we want to be holier than the Pope, bug-reference-fontify could
> check if it's the only function on the list, and then change its
> return value accordingly.

That's horrible!  ;-)  There might be two such functions that each
returns nil, and so on.

> > The mechanism with `jit-lock-bounds' in jit-lock.el is a good idea,
> > but somehow it's not quite optimal at the moment.

> It was designed for functions that actually fontify something.  We
> need to either extend it for functions that don't, or change those
> functions to pretend they do, but in a way that doesn't disrupt
> jit-lock-bounds.

I'm more in favour of enhancing the mechanism in jit-lock.el.  The
protocol to the fontifying functions is very stable, robust, and simple.

> > For example, if the first jit-lock-functions element returns
> > (... (new-BEG .  new-END)) we might be able to supply new-BEG, new-END as
> > the arguments to the second element.  Or something like that.

> I think it's too late to change the protocol, since it was in use for
> too long.

Does that change the protocol?  It merely gives a different chunk to the
later functions.  Given that they're expecting a sequence of contiguous
chunks in successive invocations, why does it matter if we pass (501
1050), (1050 2000), .... as successive argument regions rather than (501
1001), (1001 1501)?

There seem to be two types of jit-lock-functions elements.  The first,
which uses the `jit-lock-bounds' mechanism and the second which returns
a random value like nil.  I'm only aware of font-lock-fontify-region in
the first type.

So all we need to do is make sure that f-l-fontify-region is the first
function in jit-lock-functions.  All we need for that is an &optional
parameter to jit-lock-register meaning "put this function first in the
list".  Maybe.

Perhaps Stefan will say something about this problem.

-- 
Alan Mackenzie (Nuremberg, Germany).



  reply	other threads:[~2021-09-01 19:19 UTC|newest]

Thread overview: 74+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-01 17:33 bug-reference-prog-mode slows down CC Mode's scrolling by ~7% Alan Mackenzie
2021-09-01 17:44 ` Eli Zaretskii
2021-09-01 17:55   ` Alan Mackenzie
2021-09-01 18:01     ` Eli Zaretskii
2021-09-01 18:20       ` Alan Mackenzie
2021-09-01 18:28         ` Eli Zaretskii
2021-09-01 19:19           ` Alan Mackenzie [this message]
2021-09-01 20:59 ` Stefan Monnier
2021-09-02  6:26   ` Eli Zaretskii
2021-09-02 16:57   ` Alan Mackenzie
2021-09-02 18:46     ` Stefan Monnier
2021-09-02 19:24       ` Alan Mackenzie
2021-09-02 21:08         ` Alan Mackenzie
2021-09-03  6:16           ` Eli Zaretskii
2021-09-03 12:30             ` Stefan Monnier
2021-09-03 12:38               ` Eli Zaretskii
2021-09-03 22:25                 ` Stefan Monnier
2021-09-04  6:13                   ` Eli Zaretskii
2021-09-04 13:36                     ` Stefan Monnier
2021-09-04 13:55                       ` Eli Zaretskii
2021-09-04 14:44                         ` Stefan Monnier
2021-09-04 14:56                           ` Eli Zaretskii
2021-09-04 15:55                             ` Stefan Monnier
2021-09-04 16:12                               ` Eli Zaretskii
2021-09-04 16:24                                 ` Stefan Monnier
2021-09-04 16:28                                   ` Eli Zaretskii
2021-09-04 16:40                                     ` Stefan Monnier
2021-09-03  6:10         ` Eli Zaretskii
2021-09-03 10:47           ` Alan Mackenzie
2021-09-03 11:24             ` Eli Zaretskii
2021-09-03 16:15               ` Alan Mackenzie
2021-09-03 12:27             ` Stefan Monnier
2021-09-03 12:19           ` Stefan Monnier
2021-09-03 12:35             ` Eli Zaretskii
2021-09-03 16:52           ` Alan Mackenzie
2021-09-03 20:51             ` Alan Mackenzie
2021-09-04  6:09               ` Eli Zaretskii
2021-09-04 14:50                 ` Alan Mackenzie
2021-09-04 15:00                   ` Stefan Monnier
2021-09-04 15:32                     ` Alan Mackenzie
2021-09-04 15:36                       ` Eli Zaretskii
2021-09-04 15:43                         ` Alan Mackenzie
2021-09-04 15:48                           ` Eli Zaretskii
2021-09-04 16:05                             ` Alan Mackenzie
2021-09-04 16:15                               ` Eli Zaretskii
2021-09-06 10:46                                 ` Alan Mackenzie
2021-09-06 11:10                                   ` Eli Zaretskii
2021-09-06 19:08                                     ` Alan Mackenzie
2021-09-06 19:23                                       ` Eli Zaretskii
2021-09-18 11:37                                         ` Alan Mackenzie
2021-09-18 11:59                                           ` Eli Zaretskii
2021-09-06 21:59                                       ` andrés ramírez
2021-09-07 19:47                                         ` Alan Mackenzie
2021-09-07 17:57                                           ` andrés ramírez
2021-09-06 13:24                                   ` Stefan Monnier
2021-09-04 16:06                       ` Stefan Monnier
2021-09-04 16:23                         ` Eli Zaretskii
2021-09-04 16:39                           ` Stefan Monnier
2021-09-04 17:19                             ` Eli Zaretskii
2021-09-04 17:47                               ` Stefan Monnier
2021-09-04 18:10                                 ` Eli Zaretskii
2021-09-04 18:40                                   ` Stefan Monnier
2021-09-11 12:49                                     ` Eli Zaretskii
2021-09-11 17:04                                       ` Stefan Monnier
2021-09-11 17:17                                         ` Eli Zaretskii
2021-09-11 18:00                                           ` Stefan Monnier
2021-09-11 18:16                                             ` Eli Zaretskii
2021-09-11 19:55                                               ` Stefan Monnier
2021-09-12  3:51                                                 ` Eli Zaretskii
2021-09-12 16:41                                                   ` Stefan Monnier
2021-09-12 16:53                                                     ` Eli Zaretskii
2021-09-12 17:41                                                       ` Stefan Monnier
2021-09-12 17:55                                                         ` Eli Zaretskii
2021-09-12 21:11                                                           ` Stefan Monnier

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=YS/SK+EBe3KE92dk@ACM \
    --to=acm@muc.de \
    --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).