Boxuan Li <liboxuan@xxxxxxxxxxxxxx> 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. > Signed-off-by: Boxuan Li <liboxuan@xxxxxxxxxxxxxx> > --- > 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"