diff mbox series

[v4] userdiff.c & doc/gitattributes.txt: add Octave

Message ID 20190515055540.30558-1-liboxuan@connect.hku.hk (mailing list archive)
State New, archived
Headers show
Series [v4] userdiff.c & doc/gitattributes.txt: add Octave | expand

Commit Message

LI, BO XUAN May 15, 2019, 5:55 a.m. UTC
Octave pattern is almost the same as matlab, except
that '%%%' and '##' can also be used to begin code sections,
in addition to '%%' that is understood by both.

Signed-off-by: Boxuan Li <liboxuan@connect.hku.hk>
---
Thanks to all the reviewers above, this is the fourth version:
v1: use matlab pattern for octave
v2: add a new octave pattern
v3: fix indentation problem of v2
v4: improve doc and commit message
---
 Documentation/gitattributes.txt | 2 ++
 userdiff.c                      | 5 +++++
 2 files changed, 7 insertions(+)
diff mbox series

Patch

diff --git a/Documentation/gitattributes.txt b/Documentation/gitattributes.txt
index 4fb20cd0e9..45374c7dd3 100644
--- a/Documentation/gitattributes.txt
+++ b/Documentation/gitattributes.txt
@@ -821,6 +821,8 @@  patterns are available:
 
 - `matlab` suitable for source code in the MATLAB language.
 
+- `octave` suitable for source code in the Octave language.
+
 - `objc` suitable for source code in the Objective-C language.
 
 - `pascal` suitable for source code in the Pascal/Delphi language.
diff --git a/userdiff.c b/userdiff.c
index 3a78fbf504..1127a4c6b1 100644
--- a/userdiff.c
+++ b/userdiff.c
@@ -60,6 +60,11 @@  PATTERNS("java",
 PATTERNS("matlab",
 	 "^[[:space:]]*((classdef|function)[[:space:]].*)$|^%%[[:space:]].*$",
 	 "[a-zA-Z_][a-zA-Z0-9_]*|[-+0-9.e]+|[=~<>]=|\\.[*/\\^']|\\|\\||&&"),
+PATTERNS("octave",
+	 /* Mostly the same as matlab, except that '%%%' and '##' can also be used
+	  * to begin code sections, in addition to '%%' that is understood by both. */
+	 "^[[:space:]]*((classdef|function)[[:space:]].*)$|^(%%%?|##)[[:space:]].*$",
+	 "[a-zA-Z_][a-zA-Z0-9_]*|[-+0-9.e]+|[=~<>]=|\\.[*/\\^']|\\|\\||&&"),
 PATTERNS("objc",
 	 /* Negate C statements that can look like functions */
 	 "!^[ \t]*(do|for|if|else|return|switch|while)\n"