|
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.
[Prev in Thread] | Current Thread | [Next in Thread] |