Jaydeep P Das <jaydeepjd.8914@xxxxxxxxx> writes: > Subject: Re: [PATCH] userdiff: Add diff driver for Kotlin lang and tests "Add" -> "add". "lang and tests" -> "language". > The xfuncname pattern finds func/class declarations in diffs to > display as a hunk header. Yes, but an entry for a language in userdiff.c consists of the funcname pattern AND the word_regex. And I think the patch is adding both, not just funcname pattern. > This patch adds xfuncname regex and some respective > tests for Kotlin language. > > Also modifies `Documentation./gitattributes.txt` to state > the same. See Documenation/SubmittingPatches::[[imperative-mood]]. But it probably is better to leave these unsaid. The patterns, tests and documentation updates go hand in hand. > 11 files changed, 59 insertions(+) > create mode 100644 t/t4018/kotlin-class > create mode 100644 t/t4018/kotlin-enum-class > create mode 100644 t/t4018/kotlin-fun > create mode 100644 t/t4018/kotlin-inheritace-class > create mode 100644 t/t4018/kotlin-inline-class > create mode 100644 t/t4018/kotlin-interface > create mode 100644 t/t4018/kotlin-nested-fun > create mode 100644 t/t4018/kotlin-public-class > create mode 100644 t/t4018/kotlin-sealed-class > > diff --git a/Documentation/gitattributes.txt b/Documentation/gitattributes.txt > index a71dad2674..94d06dc337 100644 > --- a/Documentation/gitattributes.txt > +++ b/Documentation/gitattributes.txt > @@ -829,6 +829,8 @@ patterns are available: > > - `java` suitable for source code in the Java language. > > +- `kotlin` suitable for source code in the Kotlin language > + > - `markdown` suitable for Markdown documents. The entries before and after this new one both end with a full stop, and this new entry should do the same. > diff --git a/userdiff.c b/userdiff.c > index 8578cb0d12..a6cc6dc3b7 100644 > --- a/userdiff.c > +++ b/userdiff.c > @@ -168,6 +168,14 @@ PATTERNS("java", > "|[-+0-9.e]+[fFlL]?|0[xXbB]?[0-9a-fA-F]+[lL]?" > "|[-+*/<>%&^|=!]=" > "|--|\\+\\+|<<=?|>>>?=?|&&|\\|\\|"), > +PATTERNS("kotlin", > + /* fun, class, interface, declarations */ > + "^[ \t]*(([a-z]+[ \t]+)*(fun|class|interface)[ \t]+.*[ \t]*)$", With the three keywords clearly visible in the pattern, the comment looks somewhat redundant. I dunno. > + /* -- */ > + "[a-zA-Z_][a-zA-Z0-9_]*" > + "|[-+0-9.e]+[fFlL]?|0[xXbB]?[0-9a-fA-F]+[lL]?" > + "|[-+*/<>%&^|=!]=" > + "|--|\\+\\+|<<=?|>>>?=?|&&|\\|\\|"), The latter half is word regex, which is tested in t4034 to at least ensure that it is well formed. We can also add t/t4034/$language/ to see the patterns hit the word boundary as expected. > PATTERNS("markdown", > "^ {0,3}#{1,6}[ \t].*", > /* -- */