Subject: Re: bug#23501: Non-regex-based syntax highlighting

From: Nir Friedman <[email-masked]>
Date: Tue, 10 May 2016 16:16:03 -0400

My idea for a hook was basically to make it possible to provide a callback
function to the Major mode. If this callback function is provided, then
when a new file is loaded or an existing one saved with modifications, the
callback function is called with the full path to the file. The callback
function must return something that basically tells the major mode how to
color everything. A simple way would just be to return a list of the colors
for every single non-whitespace character taken sequentially. A single very
fast pass through this list would then be able to color every character.

Is there a reason why that would not be workable? Also, can you point me to
where exactly (e.g. via link to the emacs github mirror) the major modes
are stored?

On Tue, May 10, 2016 at 3:21 PM, Eli Zaretskii <[email-masked]> wrote:

> > From: Nir Friedman <[email-masked]>
> > Date: Tue, 10 May 2016 14:55:41 -0400
> > Cc: [email-masked]
> >
> > I guess I'm a bit less clear on the solution, because I don't have a
> good sense of who the owner of the C++
> > major mode is, and how the code is structured. My thinking was that
> perhaps hooks could be added to make
> > it easier for plugin writers to modify the syntax coloring of the major
> mode. As opposed to plugin writers
> > needing to rewrite the C++ major mode from scratch just to change the
> syntax coloring.
>
> Colors are added at display time, so hooks will not help here.  Or at
> least it isn't immediately clear to me how they could help.
>
> I suggest to study how syntax highlighting works in Emacs, including
> the JIT font-lock feature and its relation to the display engine.
> Until you have a good understanding of how this stuff works, I don't
> think you will be able to come with a design for hooks which external
> tools could use for this purpose.
>