Subject: Re: [PATCH v5] userdiff: improve java hunk header regex

From: Tassilo Horn <[email-masked]>
Date: Wed, 11 Aug 2021 19:42:59 +0200

Junio C Hamano <[email-masked]> writes:

> Just a few whitespace nits that "git am" noticed for me.

Ah, indeed.  Should all be fixed in v6.

>> diff --git a/t/t4018/java-class-member-function b/t/t4018/java-class-member-function
>> index 298bc7a71b..a8d7850412 100644
>> --- a/t/t4018/java-class-member-function
>> +++ b/t/t4018/java-class-member-function
>> @@ -3,6 +3,10 @@ public class Beer
>>  	int special;
>>  	public static void main(String RIGHT[])
>>  	{
>> -		System.out.print("ChangeMe");
>> +            someMethodCall();
>> +            someOtherMethod("17")
>> +                .doThat();
>> +            // Whatever
>> +            System.out.print("ChangeMe");
>
> I notice that the original used HT (horizontal tab) to indent, but
> the new one uses runs of SP (space).  This project has no written
> preference for coding style for Java, which means it would have been
> more appreciated if the original style were kept.

Fixed in v6.

>> diff --git a/t/t4018/java-enum-constant b/t/t4018/java-enum-constant
>> new file mode 100644
>> index 0000000000..a1931c8379
>> --- /dev/null
>> +++ b/t/t4018/java-enum-constant
>> @@ -0,0 +1,6 @@
>> +private enum RIGHT {
>> +    ONE,
>> +    TWO,
>> +    THREE,
>> +    ChangeMe
>> +}
>
> For these new tests, you'd be the one setting what styles to use ;-)
> After all, we serve users from projects with different style, and
> having variety in our test patterns is not bad.

I completely agree.

>> diff --git a/userdiff.c b/userdiff.c
>> index 3c3bbe38b0..6644931ce1 100644
>> --- a/userdiff.c
>> +++ b/userdiff.c
>> @@ -142,7 +142,11 @@ PATTERNS("html",
>>  	 "[^<>= \t]+"),
>>  PATTERNS("java",
>>  	 "!^[ \t]*(catch|do|for|if|instanceof|new|return|switch|throw|while)\n"
>> -	 "^[ \t]*(([A-Za-z_][A-Za-z_0-9]*[ \t]+)+[A-Za-z_][A-Za-z_0-9]*[ \t]*\\([^;]*)$",
>> +         /* Class, enum, and interface declarations */
>> +         "^[ \t]*(([a-z]+[ \t]+)*(class|enum|interface)[ \t]+[A-Za-z][A-Za-z0-9_$]*[ \t]+.*)$\n"
>> +         /* Method definitions; note that constructor signatures are not */
>> +         /* matched because they are indistinguishable from method calls. */
>> +         "^[ \t]*(([A-Za-z_<>&][][?&<>.,A-Za-z_0-9]*[ \t]+)+[A-Za-z_][A-Za-z_0-9]*[ \t]*\\([^;]*)$",
>>  	 /* -- */
>>  	 "[a-zA-Z_][a-zA-Z0-9_]*"
>>  	 "|[-+0-9.e]+[fFlL]?|0[xXbB]?[0-9a-fA-F]+[lL]?"
>
> This hunk does violate project convention that our codebase uses
> leading HT to indent (and align with extra SPs if needed).

Also fixed in v6.

That leads to the question if you'd welcome a patch adding a
.dir-locals.el to the repository with the right settings so that it'll
just work for contributors using the One True Editor.  Would you?

Bye,
Tassilo