From: "Ryan Zoeller via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: Ryan Zoeller <rtzoeller@rtzoeller.com>
Subject: [PATCH] userdiff: add Julia to supported userdiff languages
Date: Fri, 10 Jan 2020 03:10:09 +0000 [thread overview]
Message-ID: <pull.521.git.1578625810098.gitgitgadget@gmail.com> (raw)
Add xfuncname and word_regex patterns for Julia[1],
which is a language used in numerical analysis and
computational science.
The default behavior for xfuncname did not allow
functions to be indented, nor functions to have a
macro applied, such as @inline or @generated.
[1]: https://julialang.org
Signed-off-by: Ryan Zoeller <rtzoeller@rtzoeller.com>
---
userdiff: add Julia to supported userdiff languages
Add xfuncname and word_regex patterns for Julia1 [https://julialang.org]
, which is a language used in numerical analysis and computational
science.
The default behavior for xfuncname did not allow functions to be
indented, nor functions to have a macro applied, such as @inline or
@generated.
Signed-off-by: Ryan Zoeller rtzoeller@rtzoeller.com
[rtzoeller@rtzoeller.com]
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-521%2Frtzoeller%2Fjulia_userdiff-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-521/rtzoeller/julia_userdiff-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/521
Documentation/gitattributes.txt | 2 ++
t/t4018-diff-funcname.sh | 1 +
t/t4018/julia-function | 5 +++++
t/t4018/julia-indented-function | 8 ++++++++
t/t4018/julia-inline-function | 5 +++++
t/t4018/julia-macro | 5 +++++
t/t4018/julia-mutable-struct | 5 +++++
t/t4018/julia-struct | 5 +++++
userdiff.c | 15 +++++++++++++++
9 files changed, 51 insertions(+)
create mode 100644 t/t4018/julia-function
create mode 100644 t/t4018/julia-indented-function
create mode 100644 t/t4018/julia-inline-function
create mode 100644 t/t4018/julia-macro
create mode 100644 t/t4018/julia-mutable-struct
create mode 100644 t/t4018/julia-struct
diff --git a/Documentation/gitattributes.txt b/Documentation/gitattributes.txt
index 508fe713c4..d39dc727e3 100644
--- a/Documentation/gitattributes.txt
+++ b/Documentation/gitattributes.txt
@@ -824,6 +824,8 @@ patterns are available:
- `java` suitable for source code in the Java language.
+- `julia` suitable for source code in the Julia language.
+
- `matlab` suitable for source code in the MATLAB and Octave languages.
- `objc` suitable for source code in the Objective-C language.
diff --git a/t/t4018-diff-funcname.sh b/t/t4018-diff-funcname.sh
index c0f4839543..d4613eb7d2 100755
--- a/t/t4018-diff-funcname.sh
+++ b/t/t4018-diff-funcname.sh
@@ -38,6 +38,7 @@ diffpatterns="
golang
html
java
+ julia
matlab
objc
pascal
diff --git a/t/t4018/julia-function b/t/t4018/julia-function
new file mode 100644
index 0000000000..a2eab83c27
--- /dev/null
+++ b/t/t4018/julia-function
@@ -0,0 +1,5 @@
+function RIGHT()
+ # A comment
+ # Another comment
+ return ChangeMe
+end
diff --git a/t/t4018/julia-indented-function b/t/t4018/julia-indented-function
new file mode 100644
index 0000000000..2d48aabcdb
--- /dev/null
+++ b/t/t4018/julia-indented-function
@@ -0,0 +1,8 @@
+function outer_function()
+ function RIGHT()
+ for i = 1:10
+ print(i)
+ end
+ # ChangeMe
+ end
+end
diff --git a/t/t4018/julia-inline-function b/t/t4018/julia-inline-function
new file mode 100644
index 0000000000..5806f224fb
--- /dev/null
+++ b/t/t4018/julia-inline-function
@@ -0,0 +1,5 @@
+@inline function RIGHT()
+ # Prints Hello, then something else.
+ println("Hello")
+ println("ChangeMe")
+end
diff --git a/t/t4018/julia-macro b/t/t4018/julia-macro
new file mode 100644
index 0000000000..1d18bc2750
--- /dev/null
+++ b/t/t4018/julia-macro
@@ -0,0 +1,5 @@
+macro RIGHT()
+ # First comment
+ # Second comment
+ return :( println("ChangeMe") )
+end
diff --git a/t/t4018/julia-mutable-struct b/t/t4018/julia-mutable-struct
new file mode 100644
index 0000000000..db82017ba0
--- /dev/null
+++ b/t/t4018/julia-mutable-struct
@@ -0,0 +1,5 @@
+mutable struct RIGHT
+ x
+ y::Int
+ ChangeMe
+end
diff --git a/t/t4018/julia-struct b/t/t4018/julia-struct
new file mode 100644
index 0000000000..d3d2bda8cb
--- /dev/null
+++ b/t/t4018/julia-struct
@@ -0,0 +1,5 @@
+struct RIGHT
+ x
+ y::Int
+ ChangeMe
+end
diff --git a/userdiff.c b/userdiff.c
index efbe05e5a5..b5e938b1c2 100644
--- a/userdiff.c
+++ b/userdiff.c
@@ -79,6 +79,21 @@ PATTERNS("java",
"|[-+0-9.e]+[fFlL]?|0[xXbB]?[0-9a-fA-F]+[lL]?"
"|[-+*/<>%&^|=!]="
"|--|\\+\\+|<<=?|>>>?=?|&&|\\|\\|"),
+PATTERNS("julia",
+ "^[ \t]*(((mutable[ \t]+)?struct|(@.+[ \t])?function|macro)[ \t].*)$",
+ /* -- */
+ /* Binary literals */
+ "[-+]?0b[01]+"
+ /* Hexadecimal literals */
+ "|[-+]?0x[0-9a-fA-F]+"
+ /* Real and complex literals */
+ "|[-+0-9.e_(im)]+"
+ /* Should theoretically allow Unicode characters as part of
+ * a word, such as U+2211. However, Julia reserves most of the
+ * U+2200-U+22FF range (as well as others) as user-defined operators,
+ * therefore they are not handled in this regex. */
+ "|[a-zA-Z_][a-zA-Z0-9_!]*"
+ "|--|\\+\\+|<<=?|>>>=?|>>=?|\\\\\\\\=?|//=?|&&|\\|\\||::|->|[-+*/<>%^&|=!$]=?"),
PATTERNS("matlab",
/*
* Octave pattern is mostly the same as matlab, except that '%%%' and
base-commit: 042ed3e048af08014487d19196984347e3be7d1c
--
gitgitgadget
next reply other threads:[~2020-01-10 3:10 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-10 3:10 Ryan Zoeller via GitGitGadget [this message]
2020-01-10 13:51 ` [PATCH] userdiff: add Julia to supported userdiff languages Johannes Schindelin
2020-01-10 17:43 ` Johannes Sixt
2020-01-10 18:15 ` Ryan Zoeller
2020-01-10 20:14 ` Johannes Sixt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=pull.521.git.1578625810098.gitgitgadget@gmail.com \
--to=gitgitgadget@gmail.com \
--cc=git@vger.kernel.org \
--cc=rtzoeller@rtzoeller.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.