Re: [PATCH v3] userdiff.c & doc/gitattributes.txt: add Octave
- From
Junio C Hamano <gitster@pobox.com>
- Date
- May 15, 2019, 05:35 UTC
- Message-ID
- <xmqq4l5w7001.fsf@gitster-ct.c.googlers.com>
- In-Reply-To
- <20190511041331.51642-1-liboxuan@connect.hku.hk>
Boxuan Li <liboxuan@connect.hku.hk> writes:
> Octave pattern is almost the same as matlab. Besides, > octave also uses '%%%' or '##' to begin code sections.
My reading of the above hiccupped at around "Besides, octave also uses...".
Checking the differences in patterns, I think
... the same as matlab, except that '%%%' and '##' can also be used to begin code sections, in addition to '%%' that is understood by both.
may be easier to read. It makes it clear that you'd want to stay away from %%% and ## if you want to be compatible.
Thanks.
Show 37 quoted lines
> Signed-off-by: Boxuan Li <liboxuan@connect.hku.hk>
> ---
> Update from v2: fix indentation
> ---
> Documentation/gitattributes.txt | 2 ++
> userdiff.c | 5 +++++
> 2 files changed, 7 insertions(+)
>
> 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..7d07b82116 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. In addition, Octave
> + * supports '##' and '%%%' for code sections */
> + "^[[: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"