all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* bug#69625: 30.0.50; [PATCH] rust-ts-mode doesn't fontify some enum
@ 2024-03-08  4:43 Yuan Fu
  2024-03-08 22:56 ` Dmitry Gutov
  2024-03-09  3:50 ` Randy Taylor
  0 siblings, 2 replies; 14+ messages in thread
From: Yuan Fu @ 2024-03-08  4:43 UTC (permalink / raw)
  To: 69625

X-Debug-CC: dev@rjt.dev <mailto:dev@rjt.dev>

(I lied a little bit about on the [PATCH] part: I have a solution but didn’t turn it into a patch yet.)

The problem is follows: given the rust code below, some enum are not fontified with type face under font lock level 3, and those enum are fontified as function or variable under font lock level 4.

fn main() {
    func(MyEnum::VariantA(0));
    func(MyEnum::VariantB);
    func(VariantC);
    func(VariantD(0));
}

VariantA and VariantB are fontified correctly, but VariantC and VariantD are not.

I think a simple rule that fontifies every capitalized identifier would fix this. But I don’t know if that’ll create other problem. AFAIK capitalized identifier is always some type in rust, right?

This is first reported on rust-mode’s GitHub repo: https://github.com/rust-lang/rust-mode/issues/518

Yuan




^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#69625: 30.0.50; [PATCH] rust-ts-mode doesn't fontify some enum
  2024-03-08  4:43 bug#69625: 30.0.50; [PATCH] rust-ts-mode doesn't fontify some enum Yuan Fu
@ 2024-03-08 22:56 ` Dmitry Gutov
  2024-03-09  3:50 ` Randy Taylor
  1 sibling, 0 replies; 14+ messages in thread
From: Dmitry Gutov @ 2024-03-08 22:56 UTC (permalink / raw)
  To: Yuan Fu, 69625

On 08/03/2024 06:43, Yuan Fu wrote:
> The problem is follows: given the rust code below, some enum are not
> fontified with type face under font lock level 3, and those enum are
> fontified as function or variable under font lock level 4.
> 
> fn main() {
>      func(MyEnum::VariantA(0));
>      func(MyEnum::VariantB);
>      func(VariantC);
>      func(VariantD(0));
> }
> 
> VariantA and VariantB are fontified correctly, but VariantC and VariantD
>   are not.
> 
> I think a simple rule that fontifies every capitalized identifier would
> fix this. But I don’t know if that’ll create other problem. AFAIK
> capitalized identifier is always some type in rust, right?

This might be more of an issue with highlighters order. As you can see, 
level 3 fontifies these as 'type' already, and does that because the 
identifiers are capitalized.

Some level 4 rules probably either come earlier than where they should 
be (thus applying before the ones with the "capitalized" matcher), or 
they should use a "not capitalized" matcher if moving them down would 
cause other problems.





^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#69625: 30.0.50; [PATCH] rust-ts-mode doesn't fontify some enum
  2024-03-08  4:43 bug#69625: 30.0.50; [PATCH] rust-ts-mode doesn't fontify some enum Yuan Fu
  2024-03-08 22:56 ` Dmitry Gutov
@ 2024-03-09  3:50 ` Randy Taylor
  2024-03-15  1:52   ` Dmitry Gutov
  1 sibling, 1 reply; 14+ messages in thread
From: Randy Taylor @ 2024-03-09  3:50 UTC (permalink / raw)
  To: Yuan Fu; +Cc: Dmitry Gutov, 69625

On Thursday, March 7th, 2024 at 23:43, Yuan Fu <casouri@gmail.com> wrote:
> 
> X-Debug-CC: dev@rjt.dev mailto:dev@rjt.dev

Should be X-Debbugs-CC ;).

> 
> 
> (I lied a little bit about on the [PATCH] part: I have a solution but didn’t turn it into a patch yet.)
> 
> The problem is follows: given the rust code below, some enum are not fontified with type face under font lock level 3, and those enum are fontified as function or variable under font lock level 4.
> 
> fn main() {
> func(MyEnum::VariantA(0));
> func(MyEnum::VariantB);
> func(VariantC);
> func(VariantD(0));
> }
> 
> VariantA and VariantB are fontified correctly, but VariantC and VariantD are not.
> 
> I think a simple rule that fontifies every capitalized identifier would fix this. But I don’t know if that’ll create other problem. AFAIK capitalized identifier is always some type in rust, right?
> 

For VariantA and VariantD, these are constructors being used as functions,
so I think they are technically being highlighted correctly at level 4.
Whether or not that is desired is another question - I think that is simply
a matter of opinion/preference.
VariantA gets highlighted as a type and not a function at level 3 because that
level doesn't support functions, but does support types. Maybe that could be
considered a bug in that it shouldn't be highlighted at all for level 3?
I'm not sure how worth it would be to do something about that though, or how
easy.

For VariantC, our (and tree-sitter's) best guess is that it's a variable.
We can't really know it's a type without guessing - like assuming a capitalized
identifier is a type, and I don't think that's something we can assume. People
can have capitalized functions and variables even if that goes against Rust's
usual style. Perhaps as a compromise we could introduce a variable (or something)
that lets the user specify that all capitalized identifiers should be treated as
types? Maybe it even makes sense to default it to that behaviour since I believe
most Rust code follows that style.

I don't really think this is a tree-sitter problem to solve but more so an LSP one:
tree-sitter can't know that all of these are enums based on how they are used.
As was mentioned in that GitHub thread, LSP with semantic tokens is the way to go
for the most accuracy. But even with semantic tokens, how to highlight enum variants
being used as functions comes down to opinion methinks.

> This is first reported on rust-mode’s GitHub repo: https://github.com/rust-lang/rust-mode/issues/518
> 
> Yuan





^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#69625: 30.0.50; [PATCH] rust-ts-mode doesn't fontify some enum
  2024-03-09  3:50 ` Randy Taylor
@ 2024-03-15  1:52   ` Dmitry Gutov
  2024-03-16  1:37     ` Randy Taylor
  2024-04-08  7:25     ` Yuan Fu
  0 siblings, 2 replies; 14+ messages in thread
From: Dmitry Gutov @ 2024-03-15  1:52 UTC (permalink / raw)
  To: Randy Taylor, Yuan Fu; +Cc: 69625

On 09/03/2024 05:50, Randy Taylor wrote:
> VariantA gets highlighted as a type and not a function at level 3 because that
> level doesn't support functions, but does support types. Maybe that could be
> considered a bug in that it shouldn't be highlighted at all for level 3?

Probably.

> I'm not sure how worth it would be to do something about that though, or how
> easy.

Same. I haven't looked into it.

> For VariantC, our (and tree-sitter's) best guess is that it's a variable.
> We can't really know it's a type without guessing - like assuming a capitalized
> identifier is a type, and I don't think that's something we can assume. People
> can have capitalized functions and variables even if that goes against Rust's
> usual style. Perhaps as a compromise we could introduce a variable (or something)
> that lets the user specify that all capitalized identifiers should be treated as
> types? Maybe it even makes sense to default it to that behaviour since I believe
> most Rust code follows that style.

We do have some rules already that are based off whether an identifier 
is capitalized. I.e. some for use_as_clause, and another for 
highlighting an identifier with font-lock-constant-face if it's 
ALL_CAPS. So it might be logical to carry on with that approach.

If the style is consistent enough across the ecosystem, of course.

We could add a variable too, but that'd make the rules more complex so 
it would be helpful to understand first whether there are users who 
would benefit.





^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#69625: 30.0.50; [PATCH] rust-ts-mode doesn't fontify some enum
  2024-03-15  1:52   ` Dmitry Gutov
@ 2024-03-16  1:37     ` Randy Taylor
  2024-04-08  7:25     ` Yuan Fu
  1 sibling, 0 replies; 14+ messages in thread
From: Randy Taylor @ 2024-03-16  1:37 UTC (permalink / raw)
  To: Dmitry Gutov; +Cc: Yuan Fu, 69625

On Thursday, March 14th, 2024 at 21:52, Dmitry Gutov <dmitry@gutov.dev> wrote:
> 
> 
> On 09/03/2024 05:50, Randy Taylor wrote:
> 
> > VariantA gets highlighted as a type and not a function at level 3 because that
> > level doesn't support functions, but does support types. Maybe that could be
> > considered a bug in that it shouldn't be highlighted at all for level 3?
> 
> 
> Probably.
> 
> > I'm not sure how worth it would be to do something about that though, or how
> > easy.
> 
> 
> Same. I haven't looked into it.
> 
> > For VariantC, our (and tree-sitter's) best guess is that it's a variable.
> > We can't really know it's a type without guessing - like assuming a capitalized
> > identifier is a type, and I don't think that's something we can assume. People
> > can have capitalized functions and variables even if that goes against Rust's
> > usual style. Perhaps as a compromise we could introduce a variable (or something)
> > that lets the user specify that all capitalized identifiers should be treated as
> > types? Maybe it even makes sense to default it to that behaviour since I believe
> > most Rust code follows that style.
> 
> 
> We do have some rules already that are based off whether an identifier
> is capitalized. I.e. some for use_as_clause, and another for
> highlighting an identifier with font-lock-constant-face if it's
> ALL_CAPS. So it might be logical to carry on with that approach.
> 
> If the style is consistent enough across the ecosystem, of course.
> 

Indeed, but those rules (minus the ALL_CAPS one) don't apply to all
identifiers but rather specific kinds (most if not all applying to
use declarations).

> We could add a variable too, but that'd make the rules more complex so
> it would be helpful to understand first whether there are users who
> would benefit.

Agreed. This is the first I've heard it mentioned.





^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#69625: 30.0.50; [PATCH] rust-ts-mode doesn't fontify some enum
  2024-03-15  1:52   ` Dmitry Gutov
  2024-03-16  1:37     ` Randy Taylor
@ 2024-04-08  7:25     ` Yuan Fu
  2024-06-22 11:07       ` Stefan Kangas
  1 sibling, 1 reply; 14+ messages in thread
From: Yuan Fu @ 2024-04-08  7:25 UTC (permalink / raw)
  To: Dmitry Gutov; +Cc: Randy Taylor, 69625



> On Mar 14, 2024, at 6:52 PM, Dmitry Gutov <dmitry@gutov.dev> wrote:
> 
> On 09/03/2024 05:50, Randy Taylor wrote:
>> VariantA gets highlighted as a type and not a function at level 3 because that
>> level doesn't support functions, but does support types. Maybe that could be
>> considered a bug in that it shouldn't be highlighted at all for level 3?
> 
> Probably.
> 
>> I'm not sure how worth it would be to do something about that though, or how
>> easy.
> 
> Same. I haven't looked into it.
> 
>> For VariantC, our (and tree-sitter's) best guess is that it's a variable.
>> We can't really know it's a type without guessing - like assuming a capitalized
>> identifier is a type, and I don't think that's something we can assume. People
>> can have capitalized functions and variables even if that goes against Rust's
>> usual style. Perhaps as a compromise we could introduce a variable (or something)
>> that lets the user specify that all capitalized identifiers should be treated as
>> types? Maybe it even makes sense to default it to that behaviour since I believe
>> most Rust code follows that style.
> 
> We do have some rules already that are based off whether an identifier is capitalized. I.e. some for use_as_clause, and another for highlighting an identifier with font-lock-constant-face if it's ALL_CAPS. So it might be logical to carry on with that approach.
> 
> If the style is consistent enough across the ecosystem, of course.
> 
> We could add a variable too, but that'd make the rules more complex so it would be helpful to understand first whether there are users who would benefit.

For some reason I couldn’t see Randy’s messages. So sorry if I missed anything. I suggest we go ahead with guessing and add the variable if enough people complain. Personally speaking I believe the vast majority of Rust community wouldn’t write Rust code with capitalized variable and non-capitalized types. The Rust community is very much inclined to the standard style, AFAICT.

Yuan




^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#69625: 30.0.50; [PATCH] rust-ts-mode doesn't fontify some enum
  2024-04-08  7:25     ` Yuan Fu
@ 2024-06-22 11:07       ` Stefan Kangas
  2024-06-22 23:17         ` Yuan Fu
  0 siblings, 1 reply; 14+ messages in thread
From: Stefan Kangas @ 2024-06-22 11:07 UTC (permalink / raw)
  To: Yuan Fu, Dmitry Gutov; +Cc: Randy Taylor, 69625

Yuan Fu <casouri@gmail.com> writes:

>> On Mar 14, 2024, at 6:52 PM, Dmitry Gutov <dmitry@gutov.dev> wrote:
>>
>> On 09/03/2024 05:50, Randy Taylor wrote:
>>> VariantA gets highlighted as a type and not a function at level 3 because that
>>> level doesn't support functions, but does support types. Maybe that could be
>>> considered a bug in that it shouldn't be highlighted at all for level 3?
>>
>> Probably.
>>
>>> I'm not sure how worth it would be to do something about that though, or how
>>> easy.
>>
>> Same. I haven't looked into it.
>>
>>> For VariantC, our (and tree-sitter's) best guess is that it's a variable.
>>> We can't really know it's a type without guessing - like assuming a capitalized
>>> identifier is a type, and I don't think that's something we can assume. People
>>> can have capitalized functions and variables even if that goes against Rust's
>>> usual style. Perhaps as a compromise we could introduce a variable (or something)
>>> that lets the user specify that all capitalized identifiers should be treated as
>>> types? Maybe it even makes sense to default it to that behaviour since I believe
>>> most Rust code follows that style.
>>
>> We do have some rules already that are based off whether an identifier is capitalized. I.e. some for use_as_clause, and another for highlighting an identifier with font-lock-constant-face if it's ALL_CAPS. So it might be logical to carry on with that approach.
>>
>> If the style is consistent enough across the ecosystem, of course.
>>
>> We could add a variable too, but that'd make the rules more complex so it would be helpful to understand first whether there are users who would benefit.
>
> For some reason I couldn’t see Randy’s messages. So sorry if I missed anything. I suggest we go ahead with guessing and add the variable if enough people complain. Personally speaking I believe the vast majority of Rust community wouldn’t write Rust code with capitalized variable and non-capitalized types. The Rust community is very much inclined to the standard style, AFAICT.

Yuan, did you make any progress here?





^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#69625: 30.0.50; [PATCH] rust-ts-mode doesn't fontify some enum
  2024-06-22 11:07       ` Stefan Kangas
@ 2024-06-22 23:17         ` Yuan Fu
  2024-06-28  2:40           ` Randy Taylor
  0 siblings, 1 reply; 14+ messages in thread
From: Yuan Fu @ 2024-06-22 23:17 UTC (permalink / raw)
  To: Stefan Kangas; +Cc: Dmitry Gutov, 69625, Randy Taylor



> On Jun 22, 2024, at 4:07 AM, Stefan Kangas <stefankangas@gmail.com> wrote:
> 
> Yuan Fu <casouri@gmail.com> writes:
> 
>>> On Mar 14, 2024, at 6:52 PM, Dmitry Gutov <dmitry@gutov.dev> wrote:
>>> 
>>> On 09/03/2024 05:50, Randy Taylor wrote:
>>>> VariantA gets highlighted as a type and not a function at level 3 because that
>>>> level doesn't support functions, but does support types. Maybe that could be
>>>> considered a bug in that it shouldn't be highlighted at all for level 3?
>>> 
>>> Probably.
>>> 
>>>> I'm not sure how worth it would be to do something about that though, or how
>>>> easy.
>>> 
>>> Same. I haven't looked into it.
>>> 
>>>> For VariantC, our (and tree-sitter's) best guess is that it's a variable.
>>>> We can't really know it's a type without guessing - like assuming a capitalized
>>>> identifier is a type, and I don't think that's something we can assume. People
>>>> can have capitalized functions and variables even if that goes against Rust's
>>>> usual style. Perhaps as a compromise we could introduce a variable (or something)
>>>> that lets the user specify that all capitalized identifiers should be treated as
>>>> types? Maybe it even makes sense to default it to that behaviour since I believe
>>>> most Rust code follows that style.
>>> 
>>> We do have some rules already that are based off whether an identifier is capitalized. I.e. some for use_as_clause, and another for highlighting an identifier with font-lock-constant-face if it's ALL_CAPS. So it might be logical to carry on with that approach.
>>> 
>>> If the style is consistent enough across the ecosystem, of course.
>>> 
>>> We could add a variable too, but that'd make the rules more complex so it would be helpful to understand first whether there are users who would benefit.
>> 
>> For some reason I couldn’t see Randy’s messages. So sorry if I missed anything. I suggest we go ahead with guessing and add the variable if enough people complain. Personally speaking I believe the vast majority of Rust community wouldn’t write Rust code with capitalized variable and non-capitalized types. The Rust community is very much inclined to the standard style, AFAICT.
> 
> Yuan, did you make any progress here?

From what I can tell Randy isn’t very convince of this idea, so I didn’t make any changes. Randy, should we keep the status quo and close this or should we explore something else?

Yuan




^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#69625: 30.0.50; [PATCH] rust-ts-mode doesn't fontify some enum
  2024-06-22 23:17         ` Yuan Fu
@ 2024-06-28  2:40           ` Randy Taylor
  2024-06-28  4:43             ` Yuan Fu
  0 siblings, 1 reply; 14+ messages in thread
From: Randy Taylor @ 2024-06-28  2:40 UTC (permalink / raw)
  To: Yuan Fu; +Cc: Dmitry Gutov, Stefan Kangas, 69625

On Saturday, June 22nd, 2024 at 19:17, Yuan Fu <casouri@gmail.com> wrote:
> 
> 
> 
> 
> > On Jun 22, 2024, at 4:07 AM, Stefan Kangas stefankangas@gmail.com wrote:
> > 
> > Yuan Fu casouri@gmail.com writes:
> > 
> > > > On Mar 14, 2024, at 6:52 PM, Dmitry Gutov dmitry@gutov.dev wrote:
> > > > 
> > > > On 09/03/2024 05:50, Randy Taylor wrote:
> > > > 
> > > > > VariantA gets highlighted as a type and not a function at level 3 because that
> > > > > level doesn't support functions, but does support types. Maybe that could be
> > > > > considered a bug in that it shouldn't be highlighted at all for level 3?
> > > > 
> > > > Probably.
> > > > 
> > > > > I'm not sure how worth it would be to do something about that though, or how
> > > > > easy.
> > > > 
> > > > Same. I haven't looked into it.
> > > > 
> > > > > For VariantC, our (and tree-sitter's) best guess is that it's a variable.
> > > > > We can't really know it's a type without guessing - like assuming a capitalized
> > > > > identifier is a type, and I don't think that's something we can assume. People
> > > > > can have capitalized functions and variables even if that goes against Rust's
> > > > > usual style. Perhaps as a compromise we could introduce a variable (or something)
> > > > > that lets the user specify that all capitalized identifiers should be treated as
> > > > > types? Maybe it even makes sense to default it to that behaviour since I believe
> > > > > most Rust code follows that style.
> > > > 
> > > > We do have some rules already that are based off whether an identifier is capitalized. I.e. some for use_as_clause, and another for highlighting an identifier with font-lock-constant-face if it's ALL_CAPS. So it might be logical to carry on with that approach.
> > > > 
> > > > If the style is consistent enough across the ecosystem, of course.
> > > > 
> > > > We could add a variable too, but that'd make the rules more complex so it would be helpful to understand first whether there are users who would benefit.
> > > 
> > > For some reason I couldn’t see Randy’s messages. So sorry if I missed anything. I suggest we go ahead with guessing and add the variable if enough people complain. Personally speaking I believe the vast majority of Rust community wouldn’t write Rust code with capitalized variable and non-capitalized types. The Rust community is very much inclined to the standard style, AFAICT.
> > 
> > Yuan, did you make any progress here?
> 
> 
> From what I can tell Randy isn’t very convince of this idea, so I didn’t make any changes. Randy, should we keep the status quo and close this or should we explore something else?
> 
> Yuan

Sorry for the late response.

I thought we were waiting to see if enough people complain, and AFAIK no one else has.
Perhaps I misinterpreted your message and
you meant we should go ahead with adding this and only add the
variable to control it if people complain - apologies if so.

I'm not opposed to the idea - it's the best we can do with what
we've got. The only thing I am undecided on is if we want to bother
with the variable to control it. If we did add it, it should be
on by default since, as you mentioned, the vast majority of Rust
code follows the same convention, and at that point who is actually
going to turn it off? So it's probably not worth the hassle...

Were you thinking of adding this to the type feature or its own
feature?





^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#69625: 30.0.50; [PATCH] rust-ts-mode doesn't fontify some enum
  2024-06-28  2:40           ` Randy Taylor
@ 2024-06-28  4:43             ` Yuan Fu
  2024-06-29  2:37               ` Randy Taylor
  0 siblings, 1 reply; 14+ messages in thread
From: Yuan Fu @ 2024-06-28  4:43 UTC (permalink / raw)
  To: Randy Taylor; +Cc: Dmitry Gutov, Stefan Kangas, 69625



> On Jun 27, 2024, at 7:40 PM, Randy Taylor <dev@rjt.dev> wrote:
> 
> On Saturday, June 22nd, 2024 at 19:17, Yuan Fu <casouri@gmail.com> wrote:
>> 
>> 
>> 
>> 
>>> On Jun 22, 2024, at 4:07 AM, Stefan Kangas stefankangas@gmail.com wrote:
>>> 
>>> Yuan Fu casouri@gmail.com writes:
>>> 
>>>>> On Mar 14, 2024, at 6:52 PM, Dmitry Gutov dmitry@gutov.dev wrote:
>>>>> 
>>>>> On 09/03/2024 05:50, Randy Taylor wrote:
>>>>> 
>>>>>> VariantA gets highlighted as a type and not a function at level 3 because that
>>>>>> level doesn't support functions, but does support types. Maybe that could be
>>>>>> considered a bug in that it shouldn't be highlighted at all for level 3?
>>>>> 
>>>>> Probably.
>>>>> 
>>>>>> I'm not sure how worth it would be to do something about that though, or how
>>>>>> easy.
>>>>> 
>>>>> Same. I haven't looked into it.
>>>>> 
>>>>>> For VariantC, our (and tree-sitter's) best guess is that it's a variable.
>>>>>> We can't really know it's a type without guessing - like assuming a capitalized
>>>>>> identifier is a type, and I don't think that's something we can assume. People
>>>>>> can have capitalized functions and variables even if that goes against Rust's
>>>>>> usual style. Perhaps as a compromise we could introduce a variable (or something)
>>>>>> that lets the user specify that all capitalized identifiers should be treated as
>>>>>> types? Maybe it even makes sense to default it to that behaviour since I believe
>>>>>> most Rust code follows that style.
>>>>> 
>>>>> We do have some rules already that are based off whether an identifier is capitalized. I.e. some for use_as_clause, and another for highlighting an identifier with font-lock-constant-face if it's ALL_CAPS. So it might be logical to carry on with that approach.
>>>>> 
>>>>> If the style is consistent enough across the ecosystem, of course.
>>>>> 
>>>>> We could add a variable too, but that'd make the rules more complex so it would be helpful to understand first whether there are users who would benefit.
>>>> 
>>>> For some reason I couldn’t see Randy’s messages. So sorry if I missed anything. I suggest we go ahead with guessing and add the variable if enough people complain. Personally speaking I believe the vast majority of Rust community wouldn’t write Rust code with capitalized variable and non-capitalized types. The Rust community is very much inclined to the standard style, AFAICT.
>>> 
>>> Yuan, did you make any progress here?
>> 
>> 
>> From what I can tell Randy isn’t very convince of this idea, so I didn’t make any changes. Randy, should we keep the status quo and close this or should we explore something else?
>> 
>> Yuan
> 
> Sorry for the late response.
> 
> I thought we were waiting to see if enough people complain, and AFAIK no one else has.
> Perhaps I misinterpreted your message and
> you meant we should go ahead with adding this and only add the
> variable to control it if people complain - apologies if so.

That’s what I proposed, yeah. You didn’t say “let’s do this” (maybe I missed it, apologies if I did), so obviously I didn’t want to jump the gun ;-)

> 
> I'm not opposed to the idea - it's the best we can do with what
> we've got. The only thing I am undecided on is if we want to bother
> with the variable to control it. If we did add it, it should be
> on by default since, as you mentioned, the vast majority of Rust
> code follows the same convention, and at that point who is actually
> going to turn it off? So it's probably not worth the hassle...
> 
> Were you thinking of adding this to the type feature or its own
> feature?

I was thinking adding this to the type feature. IMHO config options should be implemented by variables, not by splitting stuff into separate tree-sitter font-lock features. I admit the name “feature” is a bit misleading in this regard...

Yuan






^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#69625: 30.0.50; [PATCH] rust-ts-mode doesn't fontify some enum
  2024-06-28  4:43             ` Yuan Fu
@ 2024-06-29  2:37               ` Randy Taylor
  2024-06-29  3:03                 ` Stefan Kangas
  0 siblings, 1 reply; 14+ messages in thread
From: Randy Taylor @ 2024-06-29  2:37 UTC (permalink / raw)
  To: Yuan Fu; +Cc: Dmitry Gutov, Stefan Kangas, 69625

On Friday, June 28th, 2024 at 00:43, Yuan Fu <casouri@gmail.com> wrote:
> 
> > On Jun 27, 2024, at 7:40 PM, Randy Taylor dev@rjt.dev wrote:
> > 
> > On Saturday, June 22nd, 2024 at 19:17, Yuan Fu casouri@gmail.com wrote:
> > 
> > > > On Jun 22, 2024, at 4:07 AM, Stefan Kangas stefankangas@gmail.com wrote:
> > > > 
> > > > Yuan Fu casouri@gmail.com writes:
> > > > 
> > > > > > On Mar 14, 2024, at 6:52 PM, Dmitry Gutov dmitry@gutov.dev wrote:
> > > > > > 
> > > > > > On 09/03/2024 05:50, Randy Taylor wrote:
> > > > > > 
> > > > > > > VariantA gets highlighted as a type and not a function at level 3 because that
> > > > > > > level doesn't support functions, but does support types. Maybe that could be
> > > > > > > considered a bug in that it shouldn't be highlighted at all for level 3?
> > > > > > 
> > > > > > Probably.
> > > > > > 
> > > > > > > I'm not sure how worth it would be to do something about that though, or how
> > > > > > > easy.
> > > > > > 
> > > > > > Same. I haven't looked into it.
> > > > > > 
> > > > > > > For VariantC, our (and tree-sitter's) best guess is that it's a variable.
> > > > > > > We can't really know it's a type without guessing - like assuming a capitalized
> > > > > > > identifier is a type, and I don't think that's something we can assume. People
> > > > > > > can have capitalized functions and variables even if that goes against Rust's
> > > > > > > usual style. Perhaps as a compromise we could introduce a variable (or something)
> > > > > > > that lets the user specify that all capitalized identifiers should be treated as
> > > > > > > types? Maybe it even makes sense to default it to that behaviour since I believe
> > > > > > > most Rust code follows that style.
> > > > > > 
> > > > > > We do have some rules already that are based off whether an identifier is capitalized. I.e. some for use_as_clause, and another for highlighting an identifier with font-lock-constant-face if it's ALL_CAPS. So it might be logical to carry on with that approach.
> > > > > > 
> > > > > > If the style is consistent enough across the ecosystem, of course.
> > > > > > 
> > > > > > We could add a variable too, but that'd make the rules more complex so it would be helpful to understand first whether there are users who would benefit.
> > > > > 
> > > > > For some reason I couldn’t see Randy’s messages. So sorry if I missed anything. I suggest we go ahead with guessing and add the variable if enough people complain. Personally speaking I believe the vast majority of Rust community wouldn’t write Rust code with capitalized variable and non-capitalized types. The Rust community is very much inclined to the standard style, AFAICT.
> > > > 
> > > > Yuan, did you make any progress here?
> > > 
> > > From what I can tell Randy isn’t very convince of this idea, so I didn’t make any changes. Randy, should we keep the status quo and close this or should we explore something else?
> > > 
> > > Yuan
> > 
> > Sorry for the late response.
> > 
> > I thought we were waiting to see if enough people complain, and AFAIK no one else has.
> > Perhaps I misinterpreted your message and
> > you meant we should go ahead with adding this and only add the
> > variable to control it if people complain - apologies if so.
> 
> 
> That’s what I proposed, yeah. You didn’t say “let’s do this” (maybe I missed it, apologies if I did), so obviously I didn’t want to jump the gun ;-)
> 
> > I'm not opposed to the idea - it's the best we can do with what
> > we've got. The only thing I am undecided on is if we want to bother
> > with the variable to control it. If we did add it, it should be
> > on by default since, as you mentioned, the vast majority of Rust
> > code follows the same convention, and at that point who is actually
> > going to turn it off? So it's probably not worth the hassle...
> > 
> > Were you thinking of adding this to the type feature or its own
> > feature?
> 
> 
> I was thinking adding this to the type feature. IMHO config options should be implemented by variables, not by splitting stuff into separate tree-sitter font-lock features. I admit the name “feature” is a bit misleading in this regard...
> 
> Yuan

Sounds good, we can consider an option if anyone complains.
This is for master, right?





^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#69625: 30.0.50; [PATCH] rust-ts-mode doesn't fontify some enum
  2024-06-29  2:37               ` Randy Taylor
@ 2024-06-29  3:03                 ` Stefan Kangas
  2024-06-29  5:41                   ` Yuan Fu
  0 siblings, 1 reply; 14+ messages in thread
From: Stefan Kangas @ 2024-06-29  3:03 UTC (permalink / raw)
  To: Randy Taylor, Yuan Fu; +Cc: Dmitry Gutov, 69625

Randy Taylor <dev@rjt.dev> writes:

> Sounds good, we can consider an option if anyone complains.
> This is for master, right?

Yeah, it's probably too late for Emacs 30.

That said, if the patch is very small and/or trivial, and well-tested,
we sometimes make exceptions for important changes.  I have no idea if
any of that would apply here, so I'm mentioning it for completion.





^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#69625: 30.0.50; [PATCH] rust-ts-mode doesn't fontify some enum
  2024-06-29  3:03                 ` Stefan Kangas
@ 2024-06-29  5:41                   ` Yuan Fu
  2024-06-29 19:08                     ` Randy Taylor
  0 siblings, 1 reply; 14+ messages in thread
From: Yuan Fu @ 2024-06-29  5:41 UTC (permalink / raw)
  To: Stefan Kangas; +Cc: Randy Taylor, 69625, Dmitry Gutov



> On Jun 28, 2024, at 8:03 PM, Stefan Kangas <stefankangas@gmail.com> wrote:
> 
> Randy Taylor <dev@rjt.dev> writes:
> 
>> Sounds good, we can consider an option if anyone complains.
>> This is for master, right?
> 
> Yeah, it's probably too late for Emacs 30.
> 
> That said, if the patch is very small and/or trivial, and well-tested,
> we sometimes make exceptions for important changes.  I have no idea if
> any of that would apply here, so I'm mentioning it for completion.

I would apply it to master. So that people on master would have time to complain, if ever.

Yuan




^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#69625: 30.0.50; [PATCH] rust-ts-mode doesn't fontify some enum
  2024-06-29  5:41                   ` Yuan Fu
@ 2024-06-29 19:08                     ` Randy Taylor
  0 siblings, 0 replies; 14+ messages in thread
From: Randy Taylor @ 2024-06-29 19:08 UTC (permalink / raw)
  To: Yuan Fu; +Cc: Dmitry Gutov, Stefan Kangas, 69625

On Saturday, June 29th, 2024 at 01:41, Yuan Fu <casouri@gmail.com> wrote:
> 
> 
> > On Jun 28, 2024, at 8:03 PM, Stefan Kangas stefankangas@gmail.com wrote:
> > 
> > Randy Taylor dev@rjt.dev writes:
> > 
> > > Sounds good, we can consider an option if anyone complains.
> > > This is for master, right?
> > 
> > Yeah, it's probably too late for Emacs 30.
> > 
> > That said, if the patch is very small and/or trivial, and well-tested,
> > we sometimes make exceptions for important changes. I have no idea if
> > any of that would apply here, so I'm mentioning it for completion.
> 
> 
> I would apply it to master. So that people on master would have time to complain, if ever.
> 
> Yuan

We're on the same wavelength :).





^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2024-06-29 19:08 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-03-08  4:43 bug#69625: 30.0.50; [PATCH] rust-ts-mode doesn't fontify some enum Yuan Fu
2024-03-08 22:56 ` Dmitry Gutov
2024-03-09  3:50 ` Randy Taylor
2024-03-15  1:52   ` Dmitry Gutov
2024-03-16  1:37     ` Randy Taylor
2024-04-08  7:25     ` Yuan Fu
2024-06-22 11:07       ` Stefan Kangas
2024-06-22 23:17         ` Yuan Fu
2024-06-28  2:40           ` Randy Taylor
2024-06-28  4:43             ` Yuan Fu
2024-06-29  2:37               ` Randy Taylor
2024-06-29  3:03                 ` Stefan Kangas
2024-06-29  5:41                   ` Yuan Fu
2024-06-29 19:08                     ` Randy Taylor

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.