Subject: bug#63328: CC Mode 5.35.2 (Java//l); Constructor function not fontified as such

From: Po Lu <[email-masked]>
Date: Fri, 26 May 2023 19:52:09 +0800

Alan Mackenzie <[email-masked]> writes:

> Hello, Po.
>
> On Fri, May 12, 2023 at 10:42:21 +0800, Po Lu wrote:
>> Alan Mackenzie <[email-masked]> writes:
>
> [ .... ]
>
>> > To fix this reuired some tweaking of the low level syntactic analysis
>> > code.  Could I ask you, please, to test the enclosed patch (which should
>> > apply cleanly to either master or the emacs-29 branch).  Then please let
>> > me know how the test went.
>
>> It seems to work, but perhaps it would be safer to change that code only
>> in Java mode, and not in the rest of the CC modes?
>
> Sorry it's taken me so long.  I wasn't really happy with that last patch
> I sent you - it slowed Java Mode's fontification by around 15%, because
> it was testing every function call for being a constructor.  I've settled
> on a scheme where the code checks for an argument list and the opening
> brace of the statement block before fontifying as a constructor.  So, on
> typing a new constructor, the fontification gets delayed until the brace
> gets typed.  This isn't ideal, though I think it's better than the 15%
> slowdown.
>
> After consideration, I think it's better to leave the check in for all
> modes, not just Java Mode.  I don't think there's any valid syntax in any
> CC Mode mode which could accidentally trigger the mechanism, and the
> problem with the lack of fontification might well occur in some derived
> mode, too.
>
> Anyhow, I have attached a patch, so would you please test it on your real
> code and let me know how well it works.  Thanks!

I don't have time to try this right now.  Would you quickly run it over
the code in `java' on Emacs's feature/android branch, and install it if
it seems to work?

TIA.