[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
font lock with functions (was: emacs rendering comparisson between emacs
From: |
David Engster |
Subject: |
font lock with functions (was: emacs rendering comparisson between emacs23 and emacs26.3) |
Date: |
Tue, 31 Mar 2020 12:15:49 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.0.90 (gnu/linux) |
> On 29.03.2020 19:39, Stefan Monnier wrote:
>> I think it's just a reflection of the fact that author doesn't know
>> enough about jit-lock and font-lock.
>
> Indeed, that font-lock rule can be a function is not very well-known.
Indeed. Since I'm currently writing a major-mode which makes heavy use
of this feature, let me add my experience.
I found the font-lock documentation in the Emacs Lisp reference manual
to be pretty opaque, but I also wouldn't really know how to improve
it. What is mostly missing are practical examples, but I understand that
a reference manual is probably not the right place for this. I found
some helpful posts online, like this SO answer from you
https://stackoverflow.com/a/14675550
and this blog post
http://www.modernemacs.com/post/advanced-syntax/
Other smaller problems I'm having:
- It is very easy during testing to completely hang your Emacs session
if one of the font-lock functions hangs. One usually needs to kill
Emacs in this case.
- Debugging is difficult because you cannot instrument the functions for
some reason. Luckily, I found 'font-lock-studio', which is incredibly
useful. We should try to get this into ELPA and advertise it in the
manual:
https://github.com/Lindydancer/font-lock-studio
On a more general note: When you use functions for font-locking, I often
find myself in the position that I'm more or less writing a parser, and
I could readily tell font-lock how to fontify several parts of the
buffer with different faces. However, AFAICS, this is not possible with
current font-lock? It seems each rule can always only return one type of
face, or am I missing something? Of course, you can still make this
work, but it makes font-lock pretty slow, because you effectively need
to re-parse the changed portions of the buffer several times. I would
imagine that fontifying based on tree-sitter would run into the same
issue?
-David
- Re: emacs rendering comparisson between emacs23 and emacs26.3, (continued)
- Re: emacs rendering comparisson between emacs23 and emacs26.3, Eli Zaretskii, 2020/03/29
- Re: emacs rendering comparisson between emacs23 and emacs26.3, Stefan Monnier, 2020/03/29
- Re: emacs rendering comparisson between emacs23 and emacs26.3, Eli Zaretskii, 2020/03/29
- Re: emacs rendering comparisson between emacs23 and emacs26.3, Dmitry Gutov, 2020/03/29
- emacs-tree-sitter and font-lock (was: emacs rendering comparisson between emacs23 and emacs26.3), Stefan Monnier, 2020/03/29
- Re: emacs-tree-sitter and font-lock, Dmitry Gutov, 2020/03/29
- font lock with functions (was: emacs rendering comparisson between emacs23 and emacs26.3),
David Engster <=
- Re: font lock with functions, Adam Porter, 2020/03/31
- Re: font lock with functions, Stefan Monnier, 2020/03/31
- Re: font lock with functions, Dmitry Gutov, 2020/03/31
- Re: font lock with functions, Stefan Monnier, 2020/03/31
- Re: font lock with functions, Dmitry Gutov, 2020/03/31
- Re: font lock with functions, Stephen Leake, 2020/03/31
- Re: emacs rendering comparisson between emacs23 and emacs26.3, Dmitry Gutov, 2020/03/29
- Re: emacs rendering comparisson between emacs23 and emacs26.3, Eli Zaretskii, 2020/03/29
- Re: emacs rendering comparisson between emacs23 and emacs26.3, Dmitry Gutov, 2020/03/29
- Re: emacs rendering comparisson between emacs23 and emacs26.3, 조성빈, 2020/03/29