emacs-devel
[Top][All Lists]
Advanced

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

Re: Tree sitter support for C-like languages


From: Theodor Thornhill
Subject: Re: Tree sitter support for C-like languages
Date: Wed, 16 Nov 2022 21:02:41 +0100

Yuan Fu <casouri@gmail.com> writes:

> I noticed that the new fontification is much busier than cc-mode, so here’s 
> some of my thoughts:
>

Yeah, I just made it very colorful mostly to prove the point that we
have very granular control.  I think Randys patch was very good, because
imo _most_ of the noise is the bracket/pointer/operators etc.

>
>    :language mode
>    :override t
>    :feature 'expression
>    '((assignment_expression
>       left: (identifier) @font-lock-variable-name-face)
>
> I think assignment should be isolated out to an “assignment” feature,
> where we highlight the lhs target of the assignment: the identifier,
> the field, etc. For example, the assignment group in Python [1]
>

Sure!

>
>      (call_expression
>       function: (identifier) @font-lock-function-name-face)
>
>      (field_expression
>       field: (field_identifier) @font-lock-variable-name-face)
>
>      (field_expression
>       argument: (identifier) @font-lock-variable-name-face
>       field: (field_identifier) @font-lock-variable-name-face)
>
>      (pointer_expression
>       argument: (identifier) @font-lock-variable-name-face))
>
> They highlight every single use of functions and fields, so they should be 
> level 3. (And I’ll disable them personally :-) Highlighting the field and the 
> functions should be two different features IMO.

Yep, I agree!  Go ahead :-)

>
>    :language mode
>    :override t
>    :feature 'statement
>    '((expression_statement (identifier) @font-lock-variable-name-face)
>      (labeled_statement
>       label: (statement_identifier) @font-lock-type-face))
>

stuff like:
```
 add_edge:  // <- this thing
  gx += WINDOW_LEFT_EDGE_X (w);
  gy += WINDOW_TOP_EDGE_Y (w);

 store_rect: // <- and this thing
  STORE_NATIVE_RECT (*rect, gx, gy, width, height);

```

I think you should just tweak it like you want.  I think it's very
time-consuming creating separate patches and bug-reports for small
tweaks and maintenance issues.  I trust your judgment here, though I
also think that Randy had some nice ideas :)

Just hack away!



reply via email to

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