From: jaydeepjd.8914@gmail.com Date: Sat, 12 Mar 2022 04:36:08 GMT Subject: Re: [PATCH v6] userdiff: add builtin diff driver for kotlin language. Message-ID: <62e13889-315a-1a42-f37b-390702c0aa9d@gmail.com> In-Reply-To: <16543315-8515-a4d7-d75b-e7fe9731a7cf@kdbg.org> On 3/12/22 1:37 AM, Johannes Sixt wrote: > Am 11.03.22 um 08:27 schrieb Jaydeep P Das: > > 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 > > --- > > Thank you. At first, I thought this round is it, but then I noticed this > line: > > > +0xFF_EC_DE_5E 0b100_000 10xFF_E1_DE_5E 0b100_100 200_000 > > Notice how the change from 100_000 to 200_000 breaks out the first digit > into its own token. Wow. I completely missed it. > > 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.