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

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

bug#61205: 'function' in 3rd element of treesit-font-lock-feature-list


From: Dmitry Gutov
Subject: bug#61205: 'function' in 3rd element of treesit-font-lock-feature-list
Date: Thu, 2 Feb 2023 13:11:30 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.2

On 02/02/2023 05:29, Randy Taylor wrote:
On Wednesday, February 1st, 2023 at 21:44, Dmitry Gutov <dgutov@yandex.ru> 
wrote:
On 02/02/2023 04:34, Randy Taylor wrote:

On Tuesday, January 31st, 2023 at 21:08, Dmitry Gutovdgutov@yandex.ru wrote:

X-Debbugs-Cc: Yuan Fucasouri@gmail.com, Randy Taylordev@rjt.dev

Some new built-in modes has 'function' feature highlighting thus enabled
by default.

rust-ts-mode, go-ts-mode, cmake-mode

Should we move it to 4 for consistency with the rest?

Previously, we talked about that and concluded that function calls are
usually everywhere and are easy to notice without additional highlighting.
If that's what folks decided on then we should keep everything consistent.

Personally, I find it odd that out of the box default highlighting wouldn't 
highlight function calls.


I think that's more useful in some languages, and less in others.

Sure, and people will have different opinions on it too. But I still think out 
of the box we should be highlighting most things like other editors do.

Perhaps we should have an extra level between 3 (highlight sparingly like other Emacs modes do) and 4 (highlight everything including stuff that doesn't always look great).

It's easy enough to take out what you don't like.

Note that in this case "taking out" some things uncovered that the highlighting really isn't great in a different configuration.

I guess we settled on this particular convention to be more consistent
with existing major modes in Emacs. But I can see how it can be
appealing, especially in languages with more complex syntax such as Rust.

Same for 'property'.

The one feature that I'm fairly certain is currently useless is
'variable', because we don't have any variable scope tracking (yet), and
the grammars don't do it for us. So too many tokens get highlighted with
font-lock-variable-name-face. Try the current rust-ts-mode, for example:
almost everything ends up with that face.

If anything that isn't a variable is getting highlighted, then that's a bug. 
Anything it's catching that isn't a variable can probably be dealt with similar 
to how token_tree is dealt with.

With a list of exceptions? I hadn't thought about that. But it sounds like it might be a fair amount of work. Depends on the specific grammar, of course.

Note that you'd also need to add such rules for every "feature" that might be disabled by the user, for its identifier tokens not to start being highlighted as a variable (if the user kept 'variable' in the features list). That's the current design we're working off.

And tree-sitter has a recommended mechanism for highlighting locals. We just haven't implemented it yet.





reply via email to

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