Re: [PATCH v6] userdiff: add builtin diff driver for kotlin language.
From: <hidden>
Date: 2022-03-12 04:36:20
On 3/12/22 1:37 AM, Johannes Sixt [off-list ref] wrote:
Am 11.03.22 um 08:27 schrieb Jaydeep P Das:quoted
The xfuncname pattern finds func/class declarations in diffs to display as a hunk header. The word_regex pattern finds individual tokens in Kotlin code to generate appropriate diffs. This patch adds xfuncname regex and word_regex for Kotlin language. Signed-off-by: Jaydeep P Das <redacted> ---Thank you. At first, I thought this round is it, but then I noticed this line:quoted
+<RED>0xFF_EC_DE_5E 0b100_000 1<RESET><GREEN>0xFF_E1_DE_5E 0b100_100 2<RESET>00_000Notice how the change from 100_000 to 200_000 breaks out the first digit into its own token.
Wow. I completely missed it.
quoted
diff --git a/userdiff.c b/userdiff.c index 8578cb0d12..c416c9b426 100644 --- a/userdiff.c +++ b/userdiff.c@@ -168,6 +168,18 @@ PATTERNS("java", "|[-+0-9.e]+[fFlL]?|0[xXbB]?[0-9a-fA-F]+[lL]?" "|[-+*/<>%&^|=!]=" "|--|\\+\\+|<<=?|>>>?=?|&&|\\|\\|"), +PATTERNS("kotlin", + "^[ \t]*(([a-z]+[ \t]+)*(fun|class|interface)[ \t]+.*)$", + /* -- */ + "[a-zA-Z_][a-zA-Z0-9_]*" + /* hexadecimal and binary numbers */ + "|0[xXbB][0-9a-fA-F_]+[lLuU]*" + /* integers and floats */ + "|[0-9][0-9_]*([.][0-9_]*)([Ee][-+]?[0-9]+)?[fFlLuU]*"This line matches a non-empty digit sequence of any length, and I thought the longest match would win. Why is that not the case here? Frankly, I'm scratching my head over it. Any ideas?
Yes. The capture group ([.][0-9_]*) should occur once or zero times. So this `([.][0-9_]*)?` will fix it.