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>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Boxuan Li 2019-05-18 11:46:23 +08:00 коммит произвёл Junio C Hamano
Родитель ab15ad1a3b
Коммит 91bf382fcf
7 изменённых файлов: 23 добавлений и 2 удалений

Просмотреть файл

@ -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.

Просмотреть файл

@ -0,0 +1,5 @@
classdef RIGHT
properties
ChangeMe
end
end

4
t/t4018/matlab-function Normal file
Просмотреть файл

@ -0,0 +1,4 @@
function y = RIGHT()
x = 5;
y = ChangeMe + x;
end

Просмотреть файл

@ -0,0 +1,3 @@
%%% RIGHT section
# this is octave script
ChangeMe = 1;

Просмотреть файл

@ -0,0 +1,3 @@
## RIGHT section
# this is octave script
ChangeMe = 1;

3
t/t4018/matlab-section Normal file
Просмотреть файл

@ -0,0 +1,3 @@
%% RIGHT section
% this is understood by both matlab and octave
ChangeMe = 1;

Просмотреть файл

@ -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 */