Thread (44 messages) 44 messages, 4 authors, 2022-03-13

Re: [PATCH] userdiff: Add diff driver for Kotlin lang and tests

From: Junio C Hamano <hidden>
Date: 2022-03-01 09:32:49

Jaydeep P Das [off-list ref] 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.
quoted hunk ↗ jump to hunk
 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.
quoted hunk ↗ jump to hunk
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].*",
 	 /* -- */
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help