зеркало из https://github.com/microsoft/git.git
userdiff: add builtin diff driver for kotlin language.
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 <jaydeepjd.8914@gmail.com> Acked-by: Johannes Sixt <j6t@kdbg.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
715d08a9e5
Коммит
09188ed930
|
@ -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.
|
||||
|
||||
- `matlab` suitable for source code in the MATLAB and Octave languages.
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
class RIGHT {
|
||||
//comment
|
||||
//comment
|
||||
return ChangeMe
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
enum class RIGHT{
|
||||
// Left
|
||||
// a comment
|
||||
ChangeMe
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
fun RIGHT(){
|
||||
//a comment
|
||||
//b comment
|
||||
return ChangeMe()
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
open class RIGHT{
|
||||
// a comment
|
||||
// b comment
|
||||
// ChangeMe
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
value class RIGHT(Args){
|
||||
// a comment
|
||||
// b comment
|
||||
ChangeMe
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
interface RIGHT{
|
||||
//another comment
|
||||
//another comment
|
||||
//ChangeMe
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
class LEFT{
|
||||
class CENTER{
|
||||
fun RIGHT( a:Int){
|
||||
//comment
|
||||
//comment
|
||||
ChangeMe
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
public class RIGHT{
|
||||
//comment1
|
||||
//comment2
|
||||
ChangeMe
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
sealed class RIGHT {
|
||||
// a comment
|
||||
// b comment
|
||||
ChangeMe
|
||||
}
|
|
@ -324,6 +324,7 @@ test_language_driver dts
|
|||
test_language_driver fortran
|
||||
test_language_driver html
|
||||
test_language_driver java
|
||||
test_language_driver kotlin
|
||||
test_language_driver matlab
|
||||
test_language_driver objc
|
||||
test_language_driver pascal
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
<BOLD>diff --git a/pre b/post<RESET>
|
||||
<BOLD>index 11ea3de..2e1df4c 100644<RESET>
|
||||
<BOLD>--- a/pre<RESET>
|
||||
<BOLD>+++ b/post<RESET>
|
||||
<CYAN>@@ -1,30 +1,30 @@<RESET>
|
||||
println("Hello World<RED>!\n<RESET><GREEN>?<RESET>")
|
||||
<GREEN>(<RESET>1<GREEN>) (<RESET>-1e10<GREEN>) (<RESET>0xabcdef<GREEN>)<RESET> '<RED>x<RESET><GREEN>y<RESET>'
|
||||
[<RED>a<RESET><GREEN>x<RESET>] <RED>a<RESET><GREEN>x<RESET>-><RED>b a<RESET><GREEN>y x<RESET>.<RED>b<RESET><GREEN>y<RESET>
|
||||
!<RED>a a<RESET><GREEN>x x<RESET>.inv() <RED>a<RESET><GREEN>x<RESET>*<RED>b a<RESET><GREEN>y x<RESET>&<RED>b<RESET>
|
||||
<RED>a<RESET><GREEN>y<RESET>
|
||||
<GREEN>x<RESET>*<RED>b a<RESET><GREEN>y x<RESET>/<RED>b a<RESET><GREEN>y x<RESET>%<RED>b<RESET>
|
||||
<RED>a<RESET><GREEN>y<RESET>
|
||||
<GREEN>x<RESET>+<RED>b a<RESET><GREEN>y x<RESET>-<RED>b<RESET><GREEN>y<RESET>
|
||||
a <RED>shr<RESET><GREEN>shl<RESET> b
|
||||
<RED>a<RESET><GREEN>x<RESET><<RED>b a<RESET><GREEN>y x<RESET><=<RED>b a<RESET><GREEN>y x<RESET>><RED>b a<RESET><GREEN>y x<RESET>>=<RED>b<RESET>
|
||||
<RED>a<RESET><GREEN>y<RESET>
|
||||
<GREEN>x<RESET>==<RED>b a<RESET><GREEN>y x<RESET>!=<RED>b a<RESET><GREEN>y x<RESET>===<RED>b<RESET>
|
||||
<RED>a<RESET><GREEN>y<RESET>
|
||||
<GREEN>x<RESET> and <RED>b<RESET>
|
||||
<RED>a<RESET><GREEN>y<RESET>
|
||||
<GREEN>x<RESET>^<RED>b<RESET>
|
||||
<RED>a<RESET><GREEN>y<RESET>
|
||||
<GREEN>x<RESET> or <RED>b<RESET>
|
||||
<RED>a<RESET><GREEN>y<RESET>
|
||||
<GREEN>x<RESET>&&<RED>b a<RESET><GREEN>y x<RESET>||<RED>b<RESET>
|
||||
<RED>a<RESET><GREEN>y<RESET>
|
||||
<GREEN>x<RESET>=<RED>b a<RESET><GREEN>y x<RESET>+=<RED>b a<RESET><GREEN>y x<RESET>-=<RED>b a<RESET><GREEN>y x<RESET>*=<RED>b a<RESET><GREEN>y x<RESET>/=<RED>b a<RESET><GREEN>y x<RESET>%=<RED>b a<RESET><GREEN>y x<RESET><<=<RED>b a<RESET><GREEN>y x<RESET>>>=<RED>b a<RESET><GREEN>y x<RESET>&=<RED>b a<RESET><GREEN>y x<RESET>^=<RED>b a<RESET><GREEN>y x<RESET>|=<RED>b<RESET><GREEN>y<RESET>
|
||||
a<RED>=<RESET><GREEN>+=<RESET>b c<RED>+=<RESET><GREEN>=<RESET>d e<RED>-=<RESET><GREEN><=<RESET>f g<RED>*=<RESET><GREEN>>=<RESET>h i<RED>/=<RESET><GREEN>/<RESET>j k<RED>%=<RESET><GREEN>%<RESET>l m<RED><<=<RESET><GREEN><<<RESET>n o<RED>>>=<RESET><GREEN>>><RESET>p q<RED>&=<RESET><GREEN>&<RESET>r s<RED>^=<RESET><GREEN>^<RESET>t u<RED>|=<RESET><GREEN>|<RESET>v
|
||||
a<RED><<=<RESET><GREEN><=<RESET>b
|
||||
a<RED>||<RESET><GREEN>|<RESET>b a<RED>&&<RESET><GREEN>&<RESET>b
|
||||
<RED>a<RESET><GREEN>x<RESET>,y
|
||||
--a<RED>==<RESET><GREEN>!=<RESET>--b
|
||||
a++<RED>==<RESET><GREEN>!=<RESET>++b
|
||||
<RED>0xFF_EC_DE_5E 0b100_000 100_000<RESET><GREEN>0xFF_E1_DE_5E 0b100_100 200_000<RESET>
|
||||
a<RED>==<RESET><GREEN>===<RESET>b
|
||||
a<RED>!!<RESET><GREEN>!=<RESET>b
|
||||
<RED>_32<RESET><GREEN>_33<RESET>.find(arr)
|
||||
X.<RED>fill<RESET><GREEN>find<RESET>()
|
||||
X.<RED>u<RESET><GREEN>f<RESET>+1
|
||||
X.u<RED>-<RESET><GREEN>+<RESET>2
|
||||
a<RED>.<RESET><GREEN>..<RESET>b
|
||||
a<RED>?.<RESET><GREEN>?:<RESET>b
|
||||
<RED>.32_00_456<RESET><GREEN>.32_00_446<RESET>
|
|
@ -0,0 +1,30 @@
|
|||
println("Hello World?")
|
||||
(1) (-1e10) (0xabcdef) 'y'
|
||||
[x] x->y x.y
|
||||
!x x.inv() x*y x&y
|
||||
x*y x/y x%y
|
||||
x+y x-y
|
||||
a shl b
|
||||
x<y x<=y x>y x>=y
|
||||
x==y x!=y x===y
|
||||
x and y
|
||||
x^y
|
||||
x or y
|
||||
x&&y x||y
|
||||
x=y x+=y x-=y x*=y x/=y x%=y x<<=y x>>=y x&=y x^=y x|=y
|
||||
a+=b c=d e<=f g>=h i/j k%l m<<n o>>p q&r s^t u|v
|
||||
a<=b
|
||||
a|b a&b
|
||||
x,y
|
||||
--a!=--b
|
||||
a++!=++b
|
||||
0xFF_E1_DE_5E 0b100_100 200_000
|
||||
a===b
|
||||
a!=b
|
||||
_33.find(arr)
|
||||
X.find()
|
||||
X.f+1
|
||||
X.u+2
|
||||
a..b
|
||||
a?:b
|
||||
.32_00_446
|
|
@ -0,0 +1,30 @@
|
|||
println("Hello World!\n")
|
||||
1 -1e10 0xabcdef 'x'
|
||||
[a] a->b a.b
|
||||
!a a.inv() a*b a&b
|
||||
a*b a/b a%b
|
||||
a+b a-b
|
||||
a shr b
|
||||
a<b a<=b a>b a>=b
|
||||
a==b a!=b a===b
|
||||
a and b
|
||||
a^b
|
||||
a or b
|
||||
a&&b a||b
|
||||
a=b a+=b a-=b a*=b a/=b a%=b a<<=b a>>=b a&=b a^=b a|=b
|
||||
a=b c+=d e-=f g*=h i/=j k%=l m<<=n o>>=p q&=r s^=t u|=v
|
||||
a<<=b
|
||||
a||b a&&b
|
||||
a,y
|
||||
--a==--b
|
||||
a++==++b
|
||||
0xFF_EC_DE_5E 0b100_000 100_000
|
||||
a==b
|
||||
a!!b
|
||||
_32.find(arr)
|
||||
X.fill()
|
||||
X.u+1
|
||||
X.u-2
|
||||
a.b
|
||||
a?.b
|
||||
.32_00_456
|
12
userdiff.c
12
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]*"
|
||||
/* floating point numbers beginning with decimal point */
|
||||
"|[.][0-9][0-9_]*([Ee][-+]?[0-9]+)?[fFlLuU]?"
|
||||
/* unary and binary operators */
|
||||
"|[-+*/<>%&^|=!]==?|--|\\+\\+|<<=|>>=|&&|\\|\\||->|\\.\\*|!!|[?:.][.:]"),
|
||||
PATTERNS("markdown",
|
||||
"^ {0,3}#{1,6}[ \t].*",
|
||||
/* -- */
|
||||
|
|
Загрузка…
Ссылка в новой задаче