diff mbox series

[v5] userdiff: add Octave

Message ID 20190518034623.87702-1-liboxuan@connect.hku.hk (mailing list archive)
State New, archived
Headers show
Series [v5] userdiff: add Octave | expand

Commit Message

LI, BO XUAN May 18, 2019, 3:46 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. Octave
pattern is merged into Matlab pattern. Test cases for
the hunk header patterns of matlab and octave under
t/t4018 are added.

Signed-off-by: Boxuan Li <liboxuan@connect.hku.hk>
---
v1: use matlab pattern for octave
v2: add a new octave pattern
v3: fix indentation problem of v2
v4: improve doc and commit message
v5: merge octave pattern into matlab and add test cases
---
 Documentation/gitattributes.txt | 2 +-
 t/t4018/matlab-class-definition | 5 +++++
 t/t4018/matlab-function         | 4 ++++
 t/t4018/matlab-octave-section-1 | 3 +++
 t/t4018/matlab-octave-section-2 | 3 +++
 t/t4018/matlab-section          | 3 +++
 userdiff.c                      | 5 ++++-
 7 files changed, 23 insertions(+), 2 deletions(-)
 create mode 100644 t/t4018/matlab-class-definition
 create mode 100644 t/t4018/matlab-function
 create mode 100644 t/t4018/matlab-octave-section-1
 create mode 100644 t/t4018/matlab-octave-section-2
 create mode 100644 t/t4018/matlab-section

Comments

Johannes Sixt May 20, 2019, 7:26 p.m. UTC | #1
Am 18.05.19 um 05:46 schrieb Boxuan Li:
> 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. Octave
> pattern is merged into Matlab pattern. Test cases for
> the hunk header patterns of matlab and octave under
> t/t4018 are added.

Thank you! This patch looks good. With or without the grammar and style
fixes below:

Acked-by: Johannes Sixt <j6t@kdbg.org>

Junio will very likely appreciate if you resend with these fixes applied.

> 
> Signed-off-by: Boxuan Li <liboxuan@connect.hku.hk>
> ---
> v1: use matlab pattern for octave
> v2: add a new octave pattern
> v3: fix indentation problem of v2
> v4: improve doc and commit message
> v5: merge octave pattern into matlab and add test cases
> ---

> diff --git a/Documentation/gitattributes.txt b/Documentation/gitattributes.txt
> index 4fb20cd0e9..e657a6b7b7 100644
> --- a/Documentation/gitattributes.txt
> +++ b/Documentation/gitattributes.txt
> @@ -819,7 +819,7 @@ patterns are available:
>  
>  - `java` suitable for source code in the Java language.
>  
> -- `matlab` suitable for source code in the MATLAB language.
> +- `matlab` suitable for source code in the MATLAB and Octave language.

s/language/languages/

>  
>  - `objc` suitable for source code in the Objective-C language.
>  

> diff --git a/userdiff.c b/userdiff.c
> index 3a78fbf504..bcae006abe 100644
> --- a/userdiff.c
> +++ b/userdiff.c
> @@ -58,7 +58,10 @@ PATTERNS("java",
>  	 "|[-+*/<>%&^|=!]="
>  	 "|--|\\+\\+|<<=?|>>>?=?|&&|\\|\\|"),
>  PATTERNS("matlab",
> -	 "^[[:space:]]*((classdef|function)[[:space:]].*)$|^%%[[:space:]].*$",
> +	 /* Octave pattern is mostly the same as matlab, except that '%%%' and
> +	  * '##' can also be used to begin code sections, in addition to '%%'
> +	  * that is understood by both. */

	/*
	 * We write multi-line
	 * comments like this.
	 */

> +	 "^[[: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 */
> 

-- Hannes
Junio C Hamano May 28, 2019, 4:37 p.m. UTC | #2
Johannes Sixt <j6t@kdbg.org> writes:

> Junio will very likely appreciate if you resend with these fixes applied.

Heh, thanks, for spotting, but this round has already been in 'next'
so any updates should be done incrementally X-<.
Johannes Sixt May 28, 2019, 8:26 p.m. UTC | #3
Am 28.05.19 um 18:37 schrieb Junio C Hamano:
> Johannes Sixt <j6t@kdbg.org> writes:
> 
>> Junio will very likely appreciate if you resend with these fixes applied.
> 
> Heh, thanks, for spotting, but this round has already been in 'next'
> so any updates should be done incrementally X-<.
> 

I don't terribly mind the small grammatic weakness and the style
violation. No further action required from my point of view.

-- Hannes
diff mbox series

Patch

diff --git a/Documentation/gitattributes.txt b/Documentation/gitattributes.txt
index 4fb20cd0e9..e657a6b7b7 100644
--- a/Documentation/gitattributes.txt
+++ b/Documentation/gitattributes.txt
@@ -819,7 +819,7 @@  patterns are available:
 
 - `java` suitable for source code in the Java language.
 
-- `matlab` suitable for source code in the MATLAB language.
+- `matlab` suitable for source code in the MATLAB and Octave language.
 
 - `objc` suitable for source code in the Objective-C language.
 
diff --git a/t/t4018/matlab-class-definition b/t/t4018/matlab-class-definition
new file mode 100644
index 0000000000..84daedfb4e
--- /dev/null
+++ b/t/t4018/matlab-class-definition
@@ -0,0 +1,5 @@ 
+classdef RIGHT
+    properties
+        ChangeMe
+    end
+end
diff --git a/t/t4018/matlab-function b/t/t4018/matlab-function
new file mode 100644
index 0000000000..897a9b13ff
--- /dev/null
+++ b/t/t4018/matlab-function
@@ -0,0 +1,4 @@ 
+function y = RIGHT()
+x = 5;
+y = ChangeMe + x;
+end
diff --git a/t/t4018/matlab-octave-section-1 b/t/t4018/matlab-octave-section-1
new file mode 100644
index 0000000000..3bb6c4670e
--- /dev/null
+++ b/t/t4018/matlab-octave-section-1
@@ -0,0 +1,3 @@ 
+%%% RIGHT section
+# this is octave script
+ChangeMe = 1;
diff --git a/t/t4018/matlab-octave-section-2 b/t/t4018/matlab-octave-section-2
new file mode 100644
index 0000000000..ab2980f7f2
--- /dev/null
+++ b/t/t4018/matlab-octave-section-2
@@ -0,0 +1,3 @@ 
+## RIGHT section
+# this is octave script
+ChangeMe = 1;
diff --git a/t/t4018/matlab-section b/t/t4018/matlab-section
new file mode 100644
index 0000000000..5ea59a5de0
--- /dev/null
+++ b/t/t4018/matlab-section
@@ -0,0 +1,3 @@ 
+%% RIGHT section
+% this is understood by both matlab and octave
+ChangeMe = 1;
diff --git a/userdiff.c b/userdiff.c
index 3a78fbf504..bcae006abe 100644
--- a/userdiff.c
+++ b/userdiff.c
@@ -58,7 +58,10 @@  PATTERNS("java",
 	 "|[-+*/<>%&^|=!]="
 	 "|--|\\+\\+|<<=?|>>>?=?|&&|\\|\\|"),
 PATTERNS("matlab",
-	 "^[[:space:]]*((classdef|function)[[:space:]].*)$|^%%[[:space:]].*$",
+	 /* Octave pattern is 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 */