[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Status update of tree-sitter features
From: |
Dmitry Gutov |
Subject: |
Re: Status update of tree-sitter features |
Date: |
Thu, 29 Dec 2022 18:38:24 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.2 |
On 29/12/2022 11:21, Yuan Fu wrote:
If it's only about calls, maybe call this category funcall?
Function, property and variable are for every occurrence of them (the touted
“consistent highlighting”). So there will be a bit of overlap between function,
variable, and definition.
By "overlap", do you mean that font-lock rules should also have entries for
variable/function definitions with category 'variable'/'function'?
In case somebody removes 'definition' from their list of enabled features but
keeps 'variable' and 'function' there?
Basically, if you enable definition alone, you get highlight for
function/variable/class definition. If you enable function/variable alone, you get
highlight for all occurrence of function/variable identifiers, which would includ
what definition highlights. Definition can be seen as the union of subsets of
function & variable feature.
Yes, but is that classification useful enough to justify the duplication
in the font-lock rules' definitions?
FWIW, I "broke" python-ts-mode in 8503b370be1, according to this
definition. Sorry?
But what do we get by this particular classification?
The user will be able to disable 'definitions' and still have all
function definitions highlighted? But not, say, variable definitions?
That doesn't strike me as particularly more useful than e.g. disabling
'definitions' and having all function references highlighted (but not
definitions). Which we would make possible by limiting 'function' to
non-definitions.
variable every variable identifier
'variable', so far, seems like the least useful. When enabled, it lights up
every bit of text that remained from other matchers -- because identifier are
everywhere.
Yes, but apparently people want it ;-)
Well, if they really do.
I figured that people who added this maybe haven't tested this thoroughly. And that maybe
they expected the effect of that "local variables highlights" feature that some
editors showcase already.
The purpose of the standard list is to regulate features, so if a major mode
wants to support a feature in the list, it uses the definition and name from
that list (rather than creating a feature with same definition but different
name, or same name but different definition). If a major mode really want
variable feature, they can add it, if not, they don’t have to.
Okay, I also have a different, somewhat related question.
Certain languages have a special syntax for "variables".
Ruby has @instance_variable and $global_variable -- the @ and $ are used
both during assignment and for later reference.
Perl has $var and @array_var.
PHP has $local_var.
Up until now we've highlighted those with font-lock-variable-name-face.
Except for @array_var in Perl, which has separate derived face. Either
way, we did highlight them.
What category should we use for them in ts-based modes? If it's
'variable', then won't be highlighted by default.
If 'variable' matchers in other existing ts modes didn't include all
identifiers everywhere, we could put 'variable' into level 3.
Or we could add a separate category for all those, I guess.
For Emacs 29, though, I would discourage the use of 'variable’.
It’s on level 4, meaning not enabled by default, so I think it’s fine.
Fair enough. If someone wants function/property but not variable, they could
fine-tune the list.
Right. All the features in level 4 are pretty over-the-top IMO, so simply
bumping to level 4 and enable everything is probably not the way to go.
I actually considered having level 4 enabled. The punctuation faces look
like 'default' without customization anyway, so it doesn't turn into
angry fruit salad right away. One can stop at customizing the "brackets"
face, for example.
Though I'd probably also want 'function' and 'property' highlights to
use other faces, distinct from 'function-name' and 'variable-name'.
- Status update of tree-sitter features, Yuan Fu, 2022/12/28
- Re: Status update of tree-sitter features, Mickey Petersen, 2022/12/28
- Re: Status update of tree-sitter features, Dmitry Gutov, 2022/12/28
- Re: Status update of tree-sitter features, Yuan Fu, 2022/12/28
- Re: Status update of tree-sitter features, Dmitry Gutov, 2022/12/28
- Re: Status update of tree-sitter features, Yuan Fu, 2022/12/29
- Re: Status update of tree-sitter features,
Dmitry Gutov <=
- Re: Status update of tree-sitter features, Yuan Fu, 2022/12/30
- Re: Status update of tree-sitter features, Dmitry Gutov, 2022/12/30
- Re: Status update of tree-sitter features, Yuan Fu, 2022/12/31
- Re: Status update of tree-sitter features, Stefan Monnier, 2022/12/28
- Re: Status update of tree-sitter features, Yuan Fu, 2022/12/29
- Re: Status update of tree-sitter features, Jostein Kjønigsen, 2022/12/30
- Re: Status update of tree-sitter features, Eli Zaretskii, 2022/12/30