bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#23501: Non-regex-based syntax highlighting


From: Nir Friedman
Subject: bug#23501: Non-regex-based syntax highlighting
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 <address@hidden> wrote:
> From: Nir Friedman <address@hidden>
> Date: Tue, 10 May 2016 14:55:41 -0400
> Cc: address@hidden
>
> 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.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]