Subject: Re: bug#61403: 30.0.50; C tree-sitter bug?

From: Po Lu <[email-masked]>
Date: Sun, 12 Feb 2023 18:30:41 +0800

Eli Zaretskii <[email-masked]> writes:

>> Cc: [email-masked]
>> Date: Sun, 12 Feb 2023 16:36:10 +0800
>> From:  Po Lu via "Bug reports for GNU Emacs,
>>  the Swiss army knife of text editors" <[email-masked]>
>> 
>> Yuan Fu <[email-masked]> writes:
>> 
>> > Po Lu <[email-masked]> writes:
>> >
>> >> Go to sfnt.c in the feature/android branch, and turn on c-ts-mode.
>> >>
>> >> Then, go to line 10754, around which should be the function definition:
>> >>
>> >> /* Load the simple glyph GLYPH into the specified INTERPRETER, scaling
>> >>    it up by INTERPRETER's scale, and run its glyph program if
>> >>    present.  Use the unscaled metrics specified in METRICS.
>> >>
>> >>    Upon success, return NULL and the resulting points and contours in
>> >>    *VALUE.  Else, value is the reason interpretation failed.  */
>> >>
>> >> TEST_STATIC const char *
>> >> sfnt_interpret_simple_glyph (struct sfnt_glyph *glyph,
>> >> 			     struct sfnt_interpreter *interpreter,
>> >> 			     struct sfnt_glyph_metrics *metrics,
>> >> 			     struct sfnt_instructed_outline **value)
>> >> {
>> >>   size_t zone_size, temp, outline_size, i;
>> >>   struct sfnt_interpreter_zone *zone;
>> >>   struct sfnt_interpreter_zone *volatile preserved_zone;
>> >>   sfnt_f26dot6 phantom_point_1_x;
>> >>
>> >> `TEST_STATIC' is fontified as a type.  Perhaps tree-sitter needs
>> >> something along the lines of `c-noise-macros'?
>> >
>> > Would it be reasonable to assume that all caps "type" are almost always
>> > macros? If it is, we can optionally defontify these kind of "types".
>> 
>> Not really, because an extremely common type is:
>> 
>>     PTR_T *ptr;
>> 
>> where ``PTR_T'' is used to represent pointers on systems that may lack
>> properly working pointers to void.
>> 
>> The standard library FILE * is also one such type with a capitalized
>> name.
>
> I admit I don't understand the problem that is the subject of this
> bug.  Why is it wrong to fontify TEST_STATIC as a type?  CC mode also
> fontifies it as a type, btw.

Yes, but CC Mode provides `c-noise-macro-names'.  I said something
similar should exist in c-ts-mode at the beginning of this thread.

> The only problem I see in what c-ts-mode does is that it does NOT
> fontify 'char', whereas CC mode does.  So if anything needs to be done
> here, we need to look into why 'char' is not fontified by c-ts-mode.

Apparently tree-sitter thinks only TEST_STATIC is the type, and
everything else is a syntactic error.