From f69e90b0d935ad1f39caf6728b6561544af0efa9 Mon Sep 17 00:00:00 2001 From: Mark Shui Hu Date: Sun, 3 Dec 2023 23:02:58 +0100 Subject: [PATCH 01/28] Fixes for multiple function definitions --- Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage | 18 ++- test/t41FunctionDefinitions.m | 147 ++++++++++++++++----- 2 files changed, 126 insertions(+), 39 deletions(-) diff --git a/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage b/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage index 7e82a45..69958ff 100644 --- a/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage +++ b/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage @@ -1454,7 +1454,7 @@ begin \G end - (?<=[\)\n]) + (?<=\))|(?>(?<!\.\.\..*)\n) patterns @@ -1463,7 +1463,7 @@ contentName meta.assignment.variable.output.matlab begin - \G(?=.*?=) + \G(?=[^\(]*?(?:=|\[|\.{3})) end \s*(=)\s* endCaptures @@ -1484,7 +1484,7 @@ match - (\])\s*\z + (\])\s* captures 1 @@ -1508,11 +1508,11 @@ include - #comments + #line_continuation include - #line_continuation + #comments @@ -1522,7 +1522,7 @@ name entity.name.function.matlab match - [a-zA-Z][a-zA-Z0-9_.]*(?=[^a-zA-Z0-9_.]) + [a-zA-Z][a-zA-Z0-9_]*(?>\.[a-zA-Z0-9_]+)* patterns @@ -1543,7 +1543,7 @@ name meta.parameters.matlab begin - (?<=[a-zA-Z0-9_])\s*\( + \s*\( end \) beginCaptures @@ -1592,6 +1592,10 @@ + + include + #line_continuation + include #comments diff --git a/test/t41FunctionDefinitions.m b/test/t41FunctionDefinitions.m index c2a3017..82be89c 100644 --- a/test/t41FunctionDefinitions.m +++ b/test/t41FunctionDefinitions.m @@ -1,63 +1,146 @@ % SYNTAX TEST "source.matlab" "Function declarations: https://github.com/mathworks/MATLAB-Language-grammar/issues/41" -function tFunctionDefinitions() -% ^^^^^^^^^^^^^^^^^^^^entity.name.function.matlab +function tFunctionDefinitions(in1) +% ^^^^^^^^^^^^^^^^^^^^ entity.name.function.matlab % Help text - y = "a string"; - %<- variable.other.readwrite.matlab + y = in1; % ^^^^^^^^^^string.quoted.double.matlab anonymousFunction = @(in1,in2) in1 + in2; - % ^keyword.operator.assignment.matlab - % ^punctuation.definition.function.anonymous.matlab - % ^punctuation.definition.parameters.begin.matlab - % ^^^variable.parameter.input.matlab - % ^punctuation.separator.parameter.comma.matlab - % ^^^variable.parameter.input.matlab - % ^punctuation.definition.parameters.end.matlab - % ^keyword.operator.arithmetic.matlab - % ^punctuation.terminator.semicolon.matlab + % ^ keyword.operator.assignment.matlab + % ^ punctuation.definition.function.anonymous.matlab + % ^ punctuation.definition.parameters.begin.matlab + % ^^^ variable.parameter.input.matlab + % ^ punctuation.separator.parameter.comma.matlab + % ^^^ variable.parameter.input.matlab + % ^ punctuation.definition.parameters.end.matlab + % ^ keyword.operator.arithmetic.matlab + % ^ punctuation.terminator.semicolon.matlab end %<- storage.type.function.end.matlab function [a,b,c] = multiOutput() -% ^^^^^^^^^^^entity.name.function.matlab +% ^ punctuation.section.assignment.group.begin.matlab +% ^ meta.assignment.variable.output.matlab variable.parameter.output.matlab +% ^ meta.assignment.variable.output.matlab punctuation.separator.parameter.comma.matlab +% ^ meta.assignment.variable.output.matlab variable.parameter.output.matlab +% ^ meta.assignment.variable.output.matlab punctuation.separator.parameter.comma.matlab +% ^ meta.assignment.variable.output.matlab variable.parameter.output.matlab +% ^ punctuation.section.assignment.group.end.matlab +% ^ keyword.operator.assignment.matlab +% ^^^^^^^^^^^ entity.name.function.matlab +% ^ meta.parameters.matlab punctuation.definition.parameters.begin.matlab +% ^ meta.parameters.matlab punctuation.definition.parameters.end.matlab % Help text - y = "a string"; -% ^^^^^^^^^^string.quoted.double.matlab + a = "a string"; + b = "b string"; + c = "c string"; end %<- storage.type.function.end.matlab -function [a,b,... +function [a,b,... comment +% ^ punctuation.section.assignment.group.begin.matlab +% ^ meta.assignment.variable.output.matlab variable.parameter.output.matlab +% ^ meta.assignment.variable.output.matlab punctuation.separator.parameter.comma.matlab +% ^ meta.assignment.variable.output.matlab variable.parameter.output.matlab +% ^ meta.assignment.variable.output.matlab punctuation.separator.parameter.comma.matlab +% ^^^ meta.assignment.variable.output.matlab punctuation.separator.continuation.line.matlab +% ^^^^^^^ meta.assignment.variable.output.matlab comment.continuation.line.matlab c] = multiLine(in1) -% ^^^^^^^^^entity.name.function.matlab +% ^ meta.assignment.variable.output.matlab variable.parameter.output.matlab +% ^ punctuation.section.assignment.group.end.matlab +% ^ keyword.operator.assignment.matlab +% ^^^^^^^^^ entity.name.function.matlab +% ^ meta.parameters.matlab punctuation.definition.parameters.begin.matlab +% ^^^ meta.parameters.matlab variable.parameter.input.matlab +% ^ meta.parameters.matlab punctuation.definition.parameters.end.matlab % Help text - y = "a string"; -% ^^^^^^^^^^string.quoted.double.matlab + a = in1; + b = "a string"; end %<- storage.type.function.end.matlab -function [a,b,... - c] = multiLine2(in1,... - in2)%^^^^^^^^^^entity.name.function.matlab - +function [a,... +% ^ punctuation.section.assignment.group.begin.matlab +% ^ meta.assignment.variable.output.matlab variable.parameter.output.matlab +% ^ meta.assignment.variable.output.matlab punctuation.separator.parameter.comma.matlab +% ^^^ meta.assignment.variable.output.matlab punctuation.separator.continuation.line.matlab + b] = multiLine2 (in1,... comment +% ^ meta.assignment.variable.output.matlab variable.parameter.output.matlab +% ^ punctuation.section.assignment.group.end.matlab +% ^ keyword.operator.assignment.matlab +% ^^^^^^^^^^ entity.name.function.matlab +% ^ meta.parameters.matlab punctuation.definition.parameters.begin.matlab +% ^^^ meta.parameters.matlab variable.parameter.input.matlab +% ^ meta.parameters.matlab punctuation.separator.parameter.comma.matlab +% ^^^ meta.parameters.matlab punctuation.separator.continuation.line.matlab +% ^^^^^^^ meta.parameters.matlab comment.continuation.line.matlab + in2) +% ^^^ meta.parameters.matlab variable.parameter.input.matlab +% ^ meta.parameters.matlab punctuation.definition.parameters.end.matlab % Help text - y = "a string"; -% ^^^^^^^^^^string.quoted.double.matlab + a = in1; + b = in2; end %<- storage.type.function.end.matlab + +function a ... comment +% ^ meta.assignment.variable.output.matlab variable.parameter.output.matlab +% ^^^ meta.assignment.variable.output.matlab punctuation.separator.continuation.line.matlab +% ^^^^^^^ meta.assignment.variable.output.matlab comment.continuation.line.matlab + = multiline3... +% ^ keyword.operator.assignment.matlab +% ^^^^^^^^^^ entity.name.function.matlab +% ^^^ meta.function.declaration.matlab punctuation.separator.continuation.line.matlab + (in1) +% ^ meta.parameters.matlab punctuation.definition.parameters.begin.matlab +% ^^^ meta.parameters.matlab variable.parameter.input.matlab +% ^ meta.parameters.matlab punctuation.definition.parameters.end.matlab + a = in1; +end + + +function multiline4(... comment +% ^^^^^^^^^^ entity.name.function.matlab +% ^ meta.parameters.matlab punctuation.definition.parameters.begin.matlab +% ^^^ meta.parameters.matlab punctuation.separator.continuation.line.matlab +% ^^^^^^^ meta.parameters.matlab comment.continuation.line.matlab + in1) +% ^^^ meta.parameters.matlab variable.parameter.input.matlab +% ^ meta.parameters.matlab punctuation.definition.parameters.end.matlab + disp(in1); +end + +function [... +% ^ punctuation.section.assignment.group.begin.matlab +% ^^^ meta.assignment.variable.output.matlab punctuation.separator.continuation.line.matlab + a... +% ^ meta.assignment.variable.output.matlab variable.parameter.output.matlab +% ^^^ meta.assignment.variable.output.matlab punctuation.separator.continuation.line.matlab + ,b] ... comment +% ^ meta.assignment.variable.output.matlab punctuation.separator.parameter.comma.matlab +% ^ meta.assignment.variable.output.matlab variable.parameter.output.matlab +% ^ punctuation.section.assignment.group.end.matlab +% ^^^ meta.function.declaration.matlab punctuation.separator.continuation.line.matlab +% ^^^^^^^ meta.function.declaration.matlab comment.continuation.line.matlab + = multiline5(in1) +% ^ keyword.operator.assignment.matlab +% ^^^^^^^^^^ entity.name.function.matlab +% ^ meta.parameters.matlab punctuation.definition.parameters.begin.matlab +% ^^^ meta.parameters.matlab variable.parameter.input.matlab +% ^ meta.parameters.matlab punctuation.definition.parameters.end.matlab + a = in1; + b = "a string"; +end + function functionWithoutParens -% ^^^^^^^^^^^^^^^^^^^^^meta.function.matlab -% ^^^^^^^^^^^^^^^^^^^^^entity.name.function.matlab +% ^^^^^^^^^^^^^^^^^^^^^meta.function.matlab entity.name.function.matlab % Help text y = "a string"; -% ^^^^^^^^^^string.quoted.double.matlab end %<- storage.type.function.end.matlab function functionWithoutParensAndEnd - % ^^^^^^^^^^^^^^^^^^^^^meta.function.matlab - % ^^^^^^^^^^^^^^^^^^^^^entity.name.function.matlab +% ^^^^^^^^^^^^^^^^^^^^^^^^^^^meta.function.matlab entity.name.function.matlab % Help text y = "a string"; - % ^^^^^^^^^^string.quoted.double.matlab From 34843a3f36e43f00d395a83e6ce9fbf137d733a5 Mon Sep 17 00:00:00 2001 From: Mark Shui Hu Date: Mon, 4 Dec 2023 11:23:36 +0100 Subject: [PATCH 02/28] unify line continuation to \.{3} --- Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage | 50 +++++++++++----------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage b/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage index 69958ff..12293e0 100644 --- a/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage +++ b/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage @@ -227,7 +227,7 @@ begin (?<=\))[^\S\n]*(\()? end - (\))?[^\S\n]*(?=;|(?<!(?:\.\.\..*))\n|%) + (\))?[^\S\n]*(?=;|(?<!(?:\.{3}.*))\n|%) beginCaptures 1 @@ -262,7 +262,7 @@ end - (?=;|(?<!(?:\.\.\..*))\n|%) + (?=;|(?<!(?:\.{3}.*))\n|%) blocks @@ -299,7 +299,7 @@ begin \G(?!$) end - (?<!\.\.\.)(?:(?=([,;])(?![^(]*\)))|$) + (?<!\.{3})(?:(?=([,;])(?![^(]*\)))|$) patterns @@ -355,7 +355,7 @@ begin \G(?!$) end - (?<!\.\.\.)(?:(?=([,;])(?![^(]*\)))|$) + (?<!\.{3})(?:(?=([,;])(?![^(]*\)))|$) patterns @@ -385,7 +385,7 @@ begin \G(?!$) end - (?<!\.\.\.)(?:(?=([,;])(?![^(]*\)))|$) + (?<!\.{3})(?:(?=([,;])(?![^(]*\)))|$) patterns @@ -449,7 +449,7 @@ begin \G(?!$) end - (?<!\.\.\.)(?:(?=([,;])(?![^(]*\)))|$) + (?<!\.{3})(?:(?=([,;])(?![^(]*\)))|$) patterns @@ -495,7 +495,7 @@ begin \G(?!$) end - (?<!\.\.\.)(?:(?=([,;])(?![^(]*\)))|$) + (?<!\.{3})(?:(?=([,;])(?![^(]*\)))|$) patterns @@ -544,7 +544,7 @@ name meta.case.matlab match - (\s*)(?<=^|[\s,;])(case)\b(.*?)(?<!\.\.\.)(?:(?=([,;])(?![^(]*\)))|$) + (\s*)(?<=^|[\s,;])(case)\b(.*?)(?<!\.{3})(?:(?=([,;])(?![^(]*\)))|$) captures 2 @@ -559,7 +559,7 @@ begin \G(?!$) end - (?<!\.\.\.)(?:(?=([,;])(?![^(]*\)))|$) + (?<!\.{3})(?:(?=([,;])(?![^(]*\)))|$) patterns @@ -681,7 +681,7 @@ begin \G end - (?<!\.\.\.)(?:(?=([,;])(?![^(]*\)))|$) + (?<!\.{3})(?:(?=([,;])(?![^(]*\)))|$) endCaptures 1 @@ -740,7 +740,7 @@ begin \G end - (?<!\.\.\.)(?=\n) + (?<!\.{3})(?=\n) patterns @@ -832,7 +832,7 @@ end - (?<!\.\.\.)(?=\n) + (?<!\.{3})(?=\n) patterns @@ -902,7 +902,7 @@ end - (?<!\.\.\.)(?=\s*%|\n) + (?<!\.{3})(?=\s*%|\n) @@ -1251,7 +1251,7 @@ comment 1 2 3 4 match - (?<=^|[^.]\n|;|,|=)([^\S\n]*)(?# A> )(\b\w+\b)([^\S\n]+)(?# B> )((?!(\+|-|\*|\.\*|\/|\.\/|\\|\.\\|\^|\.\^|==|~=|&|&&|\||\|\||=|:|>|>=|<|<=|\.\.\.)[^\S\n]?)[^\s({=;%][^\n;%]*) + (?<=^|[^.]\n|;|,|=)([^\S\n]*)(?# A> )(\b\w+\b)([^\S\n]+)(?# B> )((?!(\+|-|\*|\.\*|\/|\.\/|\\|\.\\|\^|\.\^|==|~=|&|&&|\||\|\||=|:|>|>=|<|<=|\.{3})[^\S\n]?)[^\s({=;%][^\n;%]*) comment_block @@ -1454,7 +1454,7 @@ begin \G end - (?<=\))|(?>(?<!\.\.\..*)\n) + (?<=\))|(?>(?<!\.{3}.*)\n) patterns @@ -1699,7 +1699,7 @@ begin ([a-zA-Z][a-zA-Z0-9_]*)\s*(\() end - (\)|(?<!\.\.\..*)\n) + (\)|(?<!\.{3}.*)\n) beginCaptures 1 @@ -1811,7 +1811,7 @@ begin ([a-zA-Z][a-zA-Z0-9_]*)\s*(\.)(\() end - (\)|(?<!\.\.\..*)\n) + (\)|(?<!\.{3}.*)\n) beginCaptures 1 @@ -1911,7 +1911,7 @@ begin \( end - (\)|(?<!\.\.\..*)\n) + (\)|(?<!\.{3}.*)\n) beginCaptures 0 @@ -2082,7 +2082,7 @@ end - (\}|(?<!\.\.\..*)\n) + (\}|(?<!\.{3}.*)\n) comment We don't include $self here to avoid matching command syntax inside (), [], {} patterns @@ -2121,7 +2121,7 @@ match - (\.\.\.)(.*)$ + (\.{3})(.*)$ shell_string @@ -2277,7 +2277,7 @@ begin ([a-zA-Z][a-zA-Z0-9_]*)(@)\s*([a-zA-Z][a-zA-Z0-9_]*(?:\.[a-zA-Z][a-zA-Z0-9_]*)*)(\() end - (\)|(?<!\.\.\..*)\n) + (\)|(?<!\.{3}.*)\n) beginCaptures 1 @@ -2512,7 +2512,7 @@ name keyword.operator.arithmetic.matlab match - (?<=[a-zA-Z0-9\s])(\+|-|\*|\.\*|/|\./|\\|\.\\|\^|\.\^)(?=[a-zA-Z0-9\s]|(?:\.\.\.)) + (?<=[a-zA-Z0-9\s])(\+|-|\*|\.\*|/|\./|\\|\.\\|\^|\.\^)(?=[a-zA-Z0-9\s]|(?:\.{3})) comment @@ -2520,7 +2520,7 @@ name keyword.operator.logical.matlab match - (?<=[a-zA-Z0-9\s])(==|~=|&|&&|\||\|\|)(?=[a-zA-Z0-9\s]|(?:\.\.\.)) + (?<=[a-zA-Z0-9\s])(==|~=|&|&&|\||\|\|)(?=[a-zA-Z0-9\s]|(?:\.{3})) comment @@ -2536,7 +2536,7 @@ name keyword.operator.vector.colon.matlab match - (?<=[a-zA-Z0-9_\s(){,]|^):(?=[a-zA-Z0-9_\s()},]|$||(?:\.\.\.)) + (?<=[a-zA-Z0-9_\s(){,]|^):(?=[a-zA-Z0-9_\s()},]|$||(?:\.{3})) comment @@ -2544,7 +2544,7 @@ name keyword.operator.relational.matlab match - (?<=[a-zA-Z0-9\s])(>|>=|<|<=)(?=[a-zA-Z0-9\s]|(?:\.\.\.)) + (?<=[a-zA-Z0-9\s])(>|>=|<|<=)(?=[a-zA-Z0-9\s]|(?:\.{3})) From 1c4e3ddb9d34235ba796853f859c5659f705dbb1 Mon Sep 17 00:00:00 2001 From: Mark Shui Hu Date: Fri, 7 Jun 2024 15:15:03 +0200 Subject: [PATCH 03/28] Fix imports with leading whitespace --- Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage | 2 +- test/t51Imports.m | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage b/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage index 12293e0..b68d40d 100644 --- a/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage +++ b/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage @@ -1766,7 +1766,7 @@ name meta.import.matlab match - \b(import)\b[^\S\n]+([a-zA-Z0-9.\*]*)[^\S\n]*(?=;|%|$) + [\t ]*\b(import)\b[^\S\n]+([a-zA-Z0-9.\*]*)[^\S\n]*(?=;|%|$) captures 1 diff --git a/test/t51Imports.m b/test/t51Imports.m index ac47991..883f787 100644 --- a/test/t51Imports.m +++ b/test/t51Imports.m @@ -22,8 +22,8 @@ % ^ punctuation.separator.matlab % ^^^^^^^^ entity.name.module.matlab -import module.* -% <------ keyword.other.import.matlab -% ^^^^^^ entity.name.module.matlab -% ^ punctuation.separator.matlab -% ^ variable.language.wildcard.matlab + import module.* +% ^^^^^^ keyword.other.import.matlab +% ^^^^^^ entity.name.module.matlab +% ^ punctuation.separator.matlab +% ^ variable.language.wildcard.matlab From 0e579fe4db283a34dbe6d231c9f00dd89f35256d Mon Sep 17 00:00:00 2001 From: Mark Shui Hu Date: Fri, 7 Jun 2024 15:20:18 +0200 Subject: [PATCH 04/28] use double negative to include all whitespace except for newlines --- Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage b/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage index b68d40d..230f210 100644 --- a/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage +++ b/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage @@ -1766,7 +1766,7 @@ name meta.import.matlab match - [\t ]*\b(import)\b[^\S\n]+([a-zA-Z0-9.\*]*)[^\S\n]*(?=;|%|$) + [^\S\r\n]*\b(import)\b[^\S\n]+([a-zA-Z0-9.\*]*)[^\S\n]*(?=;|%|$) captures 1 From 082c21ba2e8e6e2cdc8279b07b764179fdde0c2a Mon Sep 17 00:00:00 2001 From: Mark Hu Date: Sat, 15 Jun 2024 19:48:58 +0000 Subject: [PATCH 05/28] Fix elseif and else meta blocks --- Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage | 43 ++++++++++++------- test/snap/Account.m.snap | 16 ++++---- test/snap/controlFlow.m.snap | 48 +++++++++++----------- 3 files changed, 60 insertions(+), 47 deletions(-) diff --git a/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage b/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage index 230f210..137cf73 100644 --- a/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage +++ b/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage @@ -299,7 +299,7 @@ begin \G(?!$) end - (?<!\.{3})(?:(?=([,;])(?![^(]*\)))|$) + (?<!\.{3}.*)(?:(?=([,;])(?![^(]*\)))|$) patterns @@ -355,7 +355,7 @@ begin \G(?!$) end - (?<!\.{3})(?:(?=([,;])(?![^(]*\)))|$) + (?<!\.{3}.*)(?:(?=[,;](?![^(]*\)))|$) patterns @@ -367,9 +367,9 @@ name meta.elseif.matlab - match - (?:\s*)(?<=^|[\s,;])(elseif)\b - captures + begin + \s*(?<=^|[\s,;])(elseif)\b + beginCaptures 1 @@ -377,6 +377,8 @@ keyword.control.elseif.matlab + end + \s*(?<=^|[\s,;])(?=elseif|else|end)\b patterns @@ -385,7 +387,7 @@ begin \G(?!$) end - (?<!\.{3})(?:(?=([,;])(?![^(]*\)))|$) + (?<!\.{3}.*)(?:(?=([,;])(?![^(]*\)))|$) patterns @@ -394,14 +396,18 @@ + + include + $self + name meta.else.matlab - match - (?:\s*)(?<=^|[\s,;])(else)\b - captures + begin + \s*(?<=^|[\s,;])(else)\b + beginCaptures 1 @@ -410,7 +416,14 @@ end - ^ + \s*(?<=^|[\s,;])(?=end)\b + patterns + + + include + $self + + include @@ -449,7 +462,7 @@ begin \G(?!$) end - (?<!\.{3})(?:(?=([,;])(?![^(]*\)))|$) + (?<!\.{3}.*)(?:(?=([,;])(?![^(]*\)))|$) patterns @@ -495,7 +508,7 @@ begin \G(?!$) end - (?<!\.{3})(?:(?=([,;])(?![^(]*\)))|$) + (?<!\.{3}.*)(?:(?=([,;])(?![^(]*\)))|$) patterns @@ -544,7 +557,7 @@ name meta.case.matlab match - (\s*)(?<=^|[\s,;])(case)\b(.*?)(?<!\.{3})(?:(?=([,;])(?![^(]*\)))|$) + (\s*)(?<=^|[\s,;])(case)\b(.*?)(?<!\.{3}.*)(?:(?=([,;])(?![^(]*\)))|$) captures 2 @@ -559,7 +572,7 @@ begin \G(?!$) end - (?<!\.{3})(?:(?=([,;])(?![^(]*\)))|$) + (?<!\.{3}.*)(?:(?=([,;])(?![^(]*\)))|$) patterns @@ -681,7 +694,7 @@ begin \G end - (?<!\.{3})(?:(?=([,;])(?![^(]*\)))|$) + (?<!\.{3}.*)(?:(?=([,;])(?![^(]*\)))|$) endCaptures 1 diff --git a/test/snap/Account.m.snap b/test/snap/Account.m.snap index d4e2886..9cc31d6 100644 --- a/test/snap/Account.m.snap +++ b/test/snap/Account.m.snap @@ -108,15 +108,15 @@ #^^^^^^^^^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab meta.else.matlab # ^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab meta.else.matlab keyword.control.else.matlab > error('Value must be numeric') -#^^^^^^^^^^^^^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab -# ^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab meta.function-call.parens.matlab entity.name.function.matlab -# ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab meta.function-call.parens.matlab punctuation.section.parens.begin.matlab -# ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab meta.function-call.parens.matlab string.quoted.single.matlab punctuation.definition.string.begin.matlab -# ^^^^^^^^^^^^^^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab meta.function-call.parens.matlab string.quoted.single.matlab -# ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab meta.function-call.parens.matlab string.quoted.single.matlab punctuation.definition.string.end.matlab -# ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab meta.function-call.parens.matlab punctuation.section.parens.end.matlab +#^^^^^^^^^^^^^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab meta.else.matlab +# ^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab meta.else.matlab meta.function-call.parens.matlab entity.name.function.matlab +# ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab meta.else.matlab meta.function-call.parens.matlab punctuation.section.parens.begin.matlab +# ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab meta.else.matlab meta.function-call.parens.matlab string.quoted.single.matlab punctuation.definition.string.begin.matlab +# ^^^^^^^^^^^^^^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab meta.else.matlab meta.function-call.parens.matlab string.quoted.single.matlab +# ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab meta.else.matlab meta.function-call.parens.matlab string.quoted.single.matlab punctuation.definition.string.end.matlab +# ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab meta.else.matlab meta.function-call.parens.matlab punctuation.section.parens.end.matlab > end -#^^^^^^^^^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab +#^^^^^^^^^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab meta.else.matlab # ^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab keyword.control.end.if.matlab > end #^^^^^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab diff --git a/test/snap/controlFlow.m.snap b/test/snap/controlFlow.m.snap index 508ea50..99f9686 100644 --- a/test/snap/controlFlow.m.snap +++ b/test/snap/controlFlow.m.snap @@ -119,35 +119,35 @@ > elseif y < 20 #^^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab # ^^^^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab keyword.control.elseif.matlab -# ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab -# ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab variable.other.readwrite.matlab -# ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab -# ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab keyword.operator.relational.matlab -# ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab -# ^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab constant.numeric.decimal.matlab +# ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab meta.elseif.declaration.matlab +# ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab meta.elseif.declaration.matlab variable.other.readwrite.matlab +# ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab meta.elseif.declaration.matlab +# ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab meta.elseif.declaration.matlab keyword.operator.relational.matlab +# ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab meta.elseif.declaration.matlab +# ^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab meta.elseif.declaration.matlab constant.numeric.decimal.matlab > disp('y < 20'); -#^^^^^^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab -# ^^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.function-call.parens.matlab entity.name.function.matlab -# ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.function-call.parens.matlab punctuation.section.parens.begin.matlab -# ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.function-call.parens.matlab string.quoted.single.matlab punctuation.definition.string.begin.matlab -# ^^^^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.function-call.parens.matlab string.quoted.single.matlab -# ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.function-call.parens.matlab string.quoted.single.matlab punctuation.definition.string.end.matlab -# ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.function-call.parens.matlab punctuation.section.parens.end.matlab -# ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab punctuation.terminator.semicolon.matlab +#^^^^^^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab +# ^^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab meta.function-call.parens.matlab entity.name.function.matlab +# ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab meta.function-call.parens.matlab punctuation.section.parens.begin.matlab +# ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab meta.function-call.parens.matlab string.quoted.single.matlab punctuation.definition.string.begin.matlab +# ^^^^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab meta.function-call.parens.matlab string.quoted.single.matlab +# ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab meta.function-call.parens.matlab string.quoted.single.matlab punctuation.definition.string.end.matlab +# ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab meta.function-call.parens.matlab punctuation.section.parens.end.matlab +# ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab punctuation.terminator.semicolon.matlab > else -#^^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.else.matlab +#^^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab # ^^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.else.matlab keyword.control.else.matlab > disp("y >= 20"); -#^^^^^^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab -# ^^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.function-call.parens.matlab entity.name.function.matlab -# ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.function-call.parens.matlab punctuation.section.parens.begin.matlab -# ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.function-call.parens.matlab string.quoted.double.matlab punctuation.definition.string.begin.matlab -# ^^^^^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.function-call.parens.matlab string.quoted.double.matlab -# ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.function-call.parens.matlab string.quoted.double.matlab punctuation.definition.string.end.matlab -# ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.function-call.parens.matlab punctuation.section.parens.end.matlab -# ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab punctuation.terminator.semicolon.matlab +#^^^^^^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.else.matlab +# ^^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.else.matlab meta.function-call.parens.matlab entity.name.function.matlab +# ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.else.matlab meta.function-call.parens.matlab punctuation.section.parens.begin.matlab +# ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.else.matlab meta.function-call.parens.matlab string.quoted.double.matlab punctuation.definition.string.begin.matlab +# ^^^^^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.else.matlab meta.function-call.parens.matlab string.quoted.double.matlab +# ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.else.matlab meta.function-call.parens.matlab string.quoted.double.matlab punctuation.definition.string.end.matlab +# ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.else.matlab meta.function-call.parens.matlab punctuation.section.parens.end.matlab +# ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.else.matlab punctuation.terminator.semicolon.matlab > end -#^^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab +#^^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.else.matlab # ^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab keyword.control.end.if.matlab >catch ME #^^^^^ source.matlab meta.function.matlab meta.try.matlab meta.catch.matlab keyword.control.catch.matlab From 467e6ffe9cd10b68b44d0634c6f478e546e7e624 Mon Sep 17 00:00:00 2001 From: Mark Hu Date: Sat, 15 Jun 2024 20:30:44 +0000 Subject: [PATCH 06/28] fix anonymous functions as arguments --- Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage | 4 ++-- .../t54LineContinuationInAnonymousFunctions.m | 2 +- test/t57Operators.m | 2 +- test/t61ReadWriteOperations.m | 2 +- test/t80AnonymousFunctionArgument.m | 23 +++++++++++++++++++ 5 files changed, 28 insertions(+), 5 deletions(-) create mode 100644 test/t80AnonymousFunctionArgument.m diff --git a/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage b/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage index 230f210..ef57bbb 100644 --- a/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage +++ b/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage @@ -227,7 +227,7 @@ begin (?<=\))[^\S\n]*(\()? end - (\))?[^\S\n]*(?=;|(?<!(?:\.{3}.*))\n|%) + (\))?[^\S\n]*(?=;|,|(?<!(?:\.{3}.*))\n|%) beginCaptures 1 @@ -262,7 +262,7 @@ end - (?=;|(?<!(?:\.{3}.*))\n|%) + (?=;|,|(?<!(?:\.{3}.*))\n|%) blocks diff --git a/test/t54LineContinuationInAnonymousFunctions.m b/test/t54LineContinuationInAnonymousFunctions.m index b9fae59..ce2dfa1 100644 --- a/test/t54LineContinuationInAnonymousFunctions.m +++ b/test/t54LineContinuationInAnonymousFunctions.m @@ -1,4 +1,4 @@ -% SYNTAX TEST "source.matlab" "Imports: https://github.com/mathworks/MATLAB-Language-grammar/pull/52" +% SYNTAX TEST "source.matlab" "LineContinationInAnonymousFunctions: https://github.com/mathworks/MATLAB-Language-grammar/pull/52" @(x, y) x.^2+y; diff --git a/test/t57Operators.m b/test/t57Operators.m index aad8fca..9c67f90 100644 --- a/test/t57Operators.m +++ b/test/t57Operators.m @@ -1,4 +1,4 @@ -% SYNTAX TEST "source.matlab" "Imports: https://github.com/mathworks/MATLAB-Language-grammar/pull/57" +% SYNTAX TEST "source.matlab" "Operators: https://github.com/mathworks/MATLAB-Language-grammar/pull/57" %% Assignment and metadata query diff --git a/test/t61ReadWriteOperations.m b/test/t61ReadWriteOperations.m index ef417c1..33cbcdc 100644 --- a/test/t61ReadWriteOperations.m +++ b/test/t61ReadWriteOperations.m @@ -1,4 +1,4 @@ -% SYNTAX TEST "source.matlab" "Imports: https://github.com/mathworks/MATLAB-Language-grammar/pull/51" +% SYNTAX TEST "source.matlab" "ReadWriteOperations: https://github.com/mathworks/MATLAB-Language-grammar/pull/51" variable % <------- variable.other.readwrite.matlab diff --git a/test/t80AnonymousFunctionArgument.m b/test/t80AnonymousFunctionArgument.m new file mode 100644 index 0000000..6071676 --- /dev/null +++ b/test/t80AnonymousFunctionArgument.m @@ -0,0 +1,23 @@ +% SYNTAX TEST "source.matlab" "AnonymousFunctionArgument: https://github.com/mathworks/MATLAB-Language-grammar/pull/51" + +q = integral(@(x) x.^2, 0, 1); +% ^^^^^^^^^ meta.function.anonymous.matlab +% ^ - meta.function.anonymous.matlab + + +if ~isempty(lstr) + p.DataTipTemplate.DataTipRows(end+1) = ... + dataTipTextRow('cBin', arrayfun(@(x) lstr, binsX, 'UniformOutput', false)); +% ^^^^^^^^^ meta.function.anonymous.matlab +% ^ - meta.function.anonymous.matlab +end +% <-- meta.if.matlab keyword.control.end.if.matlab + + +if ~isempty(lstr) + p.DataTipTemplate.DataTipRows(end+1) = ... + dataTipTextRow('cBin', arrayfun(@(x) lstr, binsX, 'UniformOutput', false)); +% ^^^^^^^^^ meta.function.anonymous.matlab +% ^ - meta.function.anonymous.matlab +end +% <-- meta.if.matlab keyword.control.end.if.matlab From 5af20e5d07a2e53448b3caca2795f6d502049645 Mon Sep 17 00:00:00 2001 From: Mark Hu Date: Sun, 16 Jun 2024 09:18:18 +0000 Subject: [PATCH 07/28] fix switch statements --- Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage | 77 ++++++++----- test/snap/controlFlow.m.snap | 104 ++++++++--------- test/t19SingleLineBlocks.m | 4 +- test/t64SwitchStatements.m | 125 +++++++++++++++++++++ 4 files changed, 231 insertions(+), 79 deletions(-) create mode 100644 test/t64SwitchStatements.m diff --git a/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage b/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage index 230f210..880d419 100644 --- a/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage +++ b/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage @@ -514,7 +514,7 @@ name meta.switch.matlab begin - \s*(?<=^|[\s,;])(switch)\s+([a-zA-Z0-9][a-zA-Z0-9_]*) + \s*(?<=^|[\s,;])(switch)\b end \s*(?<=^|[\s,;])(end)\b beginCaptures @@ -524,11 +524,6 @@ name keyword.control.switch.matlab - 2 - - name - variable.other.constant.matlab - endCaptures @@ -537,22 +532,51 @@ name keyword.control.end.switch.matlab + 2 + + patterns + + + include + $self + + + patterns + + name + meta.switch.declaration.matlab + begin + \G(?!$) + end + (?<!\.{3}.*)(?:(?=[,;](?![^(]*\)))|$) + patterns + + + include + $self + + + name meta.case.matlab - match - (\s*)(?<=^|[\s,;])(case)\b(.*?)(?<!\.{3})(?:(?=([,;])(?![^(]*\)))|$) - captures + begin + \s*(?<=^|[\s,;])(case)\b + beginCaptures - 2 + 1 name keyword.control.switch.case.matlab - 3 + + end + \s*(?<=^|[\s,;])(?=case|otherwise|end)\b + patterns + name meta.case.declaration.matlab @@ -568,31 +592,34 @@ - + + include + $self + + name meta.otherwise.matlab - match - (\s*)(?<=^|[\s,;])(otherwise)\b - captures + begin + \s*(?<=^|[\s,;])(otherwise)\b + beginCaptures - 2 + 1 name keyword.control.switch.otherwise.matlab - 3 + + end + \s*(?<=^|[\s,;])(?=end)\b + patterns + - patterns - - - include - $self - - + include + $self - + include diff --git a/test/snap/controlFlow.m.snap b/test/snap/controlFlow.m.snap index 508ea50..a75735e 100644 --- a/test/snap/controlFlow.m.snap +++ b/test/snap/controlFlow.m.snap @@ -15,79 +15,79 @@ # ^^^^^^^^^^^^^^^^^^^^^ source.matlab meta.function.matlab comment.line.double-percentage.matlab entity.name.section.matlab >switch nargin #^^^^^^ source.matlab meta.function.matlab meta.switch.matlab keyword.control.switch.matlab -# ^ source.matlab meta.function.matlab meta.switch.matlab -# ^^^^^^ source.matlab meta.function.matlab meta.switch.matlab variable.other.constant.matlab +# ^ source.matlab meta.function.matlab meta.switch.matlab meta.switch.declaration.matlab +# ^^^^^^ source.matlab meta.function.matlab meta.switch.matlab meta.switch.declaration.matlab variable.language.function.matlab > case 0 #^^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab # ^^^^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab keyword.control.switch.case.matlab # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.case.declaration.matlab # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.case.declaration.matlab constant.numeric.decimal.matlab > return -#^^^^ source.matlab meta.function.matlab meta.switch.matlab meta.control.matlab -# ^^^^^^ source.matlab meta.function.matlab meta.switch.matlab meta.control.matlab keyword.control.flow.matlab +#^^^^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.control.matlab +# ^^^^^^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.control.matlab keyword.control.flow.matlab > case 1 #^^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab # ^^^^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab keyword.control.switch.case.matlab # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.case.declaration.matlab # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.case.declaration.matlab constant.numeric.decimal.matlab > y = varargin{1}; -#^^^^ source.matlab meta.function.matlab meta.switch.matlab -# ^ source.matlab meta.function.matlab meta.switch.matlab meta.assignment.variable.single.matlab variable.other.readwrite.matlab -# ^ source.matlab meta.function.matlab meta.switch.matlab -# ^ source.matlab meta.function.matlab meta.switch.matlab keyword.operator.assignment.matlab -# ^ source.matlab meta.function.matlab meta.switch.matlab -# ^^^^^^^^ source.matlab meta.function.matlab meta.switch.matlab variable.language.function.matlab -# ^ source.matlab meta.function.matlab meta.switch.matlab -# ^ source.matlab meta.function.matlab meta.switch.matlab constant.numeric.decimal.matlab -# ^ source.matlab meta.function.matlab meta.switch.matlab -# ^ source.matlab meta.function.matlab meta.switch.matlab punctuation.terminator.semicolon.matlab +#^^^^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab +# ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.assignment.variable.single.matlab variable.other.readwrite.matlab +# ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab +# ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab keyword.operator.assignment.matlab +# ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab +# ^^^^^^^^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab variable.language.function.matlab +# ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab +# ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab constant.numeric.decimal.matlab +# ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab +# ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab punctuation.terminator.semicolon.matlab > % Check single-line if inside switch for https://github.com/mathworks/MATLAB-Language-grammar/issues/19 -#^^^^ source.matlab meta.function.matlab meta.switch.matlab punctuation.whitespace.comment.leading.matlab -# ^ source.matlab meta.function.matlab meta.switch.matlab comment.line.percentage.matlab punctuation.definition.comment.matlab -# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.matlab meta.function.matlab meta.switch.matlab comment.line.percentage.matlab +#^^^^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab punctuation.whitespace.comment.leading.matlab +# ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab comment.line.percentage.matlab punctuation.definition.comment.matlab +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab comment.line.percentage.matlab > if varargin{1} < 0, return; end -#^^^^ source.matlab meta.function.matlab meta.switch.matlab meta.if.matlab -# ^^ source.matlab meta.function.matlab meta.switch.matlab meta.if.matlab keyword.control.if.matlab -# ^ source.matlab meta.function.matlab meta.switch.matlab meta.if.matlab meta.if.declaration.matlab -# ^^^^^^^^ source.matlab meta.function.matlab meta.switch.matlab meta.if.matlab meta.if.declaration.matlab variable.language.function.matlab -# ^ source.matlab meta.function.matlab meta.switch.matlab meta.if.matlab meta.if.declaration.matlab -# ^ source.matlab meta.function.matlab meta.switch.matlab meta.if.matlab meta.if.declaration.matlab constant.numeric.decimal.matlab -# ^ source.matlab meta.function.matlab meta.switch.matlab meta.if.matlab meta.if.declaration.matlab -# ^ source.matlab meta.function.matlab meta.switch.matlab meta.if.matlab meta.if.declaration.matlab -# ^ source.matlab meta.function.matlab meta.switch.matlab meta.if.matlab meta.if.declaration.matlab keyword.operator.relational.matlab -# ^ source.matlab meta.function.matlab meta.switch.matlab meta.if.matlab meta.if.declaration.matlab -# ^ source.matlab meta.function.matlab meta.switch.matlab meta.if.matlab meta.if.declaration.matlab constant.numeric.decimal.matlab -# ^ source.matlab meta.function.matlab meta.switch.matlab meta.if.matlab punctuation.separator.comma.matlab -# ^ source.matlab meta.function.matlab meta.switch.matlab meta.if.matlab meta.control.matlab -# ^^^^^^ source.matlab meta.function.matlab meta.switch.matlab meta.if.matlab meta.control.matlab keyword.control.flow.matlab -# ^ source.matlab meta.function.matlab meta.switch.matlab meta.if.matlab punctuation.terminator.semicolon.matlab -# ^ source.matlab meta.function.matlab meta.switch.matlab meta.if.matlab -# ^^^ source.matlab meta.function.matlab meta.switch.matlab meta.if.matlab keyword.control.end.if.matlab +#^^^^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.if.matlab +# ^^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.if.matlab keyword.control.if.matlab +# ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.if.matlab meta.if.declaration.matlab +# ^^^^^^^^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.if.matlab meta.if.declaration.matlab variable.language.function.matlab +# ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.if.matlab meta.if.declaration.matlab +# ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.if.matlab meta.if.declaration.matlab constant.numeric.decimal.matlab +# ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.if.matlab meta.if.declaration.matlab +# ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.if.matlab meta.if.declaration.matlab +# ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.if.matlab meta.if.declaration.matlab keyword.operator.relational.matlab +# ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.if.matlab meta.if.declaration.matlab +# ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.if.matlab meta.if.declaration.matlab constant.numeric.decimal.matlab +# ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.if.matlab punctuation.separator.comma.matlab +# ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.if.matlab meta.control.matlab +# ^^^^^^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.if.matlab meta.control.matlab keyword.control.flow.matlab +# ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.if.matlab punctuation.terminator.semicolon.matlab +# ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.if.matlab +# ^^^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.if.matlab keyword.control.end.if.matlab > case 2 #^^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab # ^^^^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab keyword.control.switch.case.matlab # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.case.declaration.matlab # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.case.declaration.matlab constant.numeric.decimal.matlab > y = varargin{1} + varargin{2}; -#^^^^ source.matlab meta.function.matlab meta.switch.matlab -# ^ source.matlab meta.function.matlab meta.switch.matlab meta.assignment.variable.single.matlab variable.other.readwrite.matlab -# ^ source.matlab meta.function.matlab meta.switch.matlab -# ^ source.matlab meta.function.matlab meta.switch.matlab keyword.operator.assignment.matlab -# ^ source.matlab meta.function.matlab meta.switch.matlab -# ^^^^^^^^ source.matlab meta.function.matlab meta.switch.matlab variable.language.function.matlab -# ^ source.matlab meta.function.matlab meta.switch.matlab -# ^ source.matlab meta.function.matlab meta.switch.matlab constant.numeric.decimal.matlab -# ^ source.matlab meta.function.matlab meta.switch.matlab -# ^ source.matlab meta.function.matlab meta.switch.matlab -# ^ source.matlab meta.function.matlab meta.switch.matlab keyword.operator.arithmetic.matlab -# ^ source.matlab meta.function.matlab meta.switch.matlab -# ^^^^^^^^ source.matlab meta.function.matlab meta.switch.matlab variable.language.function.matlab -# ^ source.matlab meta.function.matlab meta.switch.matlab -# ^ source.matlab meta.function.matlab meta.switch.matlab constant.numeric.decimal.matlab -# ^ source.matlab meta.function.matlab meta.switch.matlab -# ^ source.matlab meta.function.matlab meta.switch.matlab punctuation.terminator.semicolon.matlab +#^^^^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab +# ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.assignment.variable.single.matlab variable.other.readwrite.matlab +# ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab +# ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab keyword.operator.assignment.matlab +# ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab +# ^^^^^^^^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab variable.language.function.matlab +# ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab +# ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab constant.numeric.decimal.matlab +# ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab +# ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab +# ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab keyword.operator.arithmetic.matlab +# ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab +# ^^^^^^^^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab variable.language.function.matlab +# ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab +# ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab constant.numeric.decimal.matlab +# ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab +# ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab punctuation.terminator.semicolon.matlab > otherwise -#^^ source.matlab meta.function.matlab meta.switch.matlab meta.otherwise.matlab +#^^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab # ^^^^^^^^^ source.matlab meta.function.matlab meta.switch.matlab meta.otherwise.matlab keyword.control.switch.otherwise.matlab >end #^^^ source.matlab meta.function.matlab meta.switch.matlab keyword.control.end.switch.matlab diff --git a/test/t19SingleLineBlocks.m b/test/t19SingleLineBlocks.m index 2a18a27..a46db11 100644 --- a/test/t19SingleLineBlocks.m +++ b/test/t19SingleLineBlocks.m @@ -1,7 +1,7 @@ % SYNTAX TEST "source.matlab" "Blocks like if, for, etc. on a single line: https://github.com/mathworks/MATLAB-Language-grammar/issues/19" function y = t19SingleLineBlocks(x) switch x -% ^ variable.other.constant.matlab +% ^ meta.switch.declaration.matlab case 1 % ^^^^ keyword.control.switch.case.matlab % ^ constant.numeric.decimal.matlab @@ -23,7 +23,7 @@ end switch x, case 1, disp(1), case 2, disp(2), otherwise, disp(0); end % ^^^^^^ keyword.control.switch.matlab -% ^ variable.other.constant.matlab +% ^ meta.switch.declaration.matlab % ^ punctuation.separator.comma.matlab % ^^^^ keyword.control.switch.case.matlab % ^ constant.numeric.decimal.matlab diff --git a/test/t64SwitchStatements.m b/test/t64SwitchStatements.m new file mode 100644 index 0000000..21517a2 --- /dev/null +++ b/test/t64SwitchStatements.m @@ -0,0 +1,125 @@ +% SYNTAX TEST "source.matlab" "SwitchStatements: https://github.com/mathworks/MATLAB-Language-grammar/pull/64" + + + +% https://github.com/mathworks/MATLAB-Language-grammar/issues/45 +switch(letter) +% <----- keyword.control.switch.matlab +% ^^^^^^^^ meta.switch.declaration.matlab + case {'A', 'B', 'C'} +% ^^^^ keyword.control.switch.case.matlab +% ^^^^^^^^^^^^^^^^ meta.case.declaration.matlab + return; + case {'D', 'E', 'F'} +% ^^^^ keyword.control.switch.case.matlab +% ^^^^^^^^^^^^^^^^ meta.case.declaration.matlab + return; + case 'X' +% ^^^^ keyword.control.switch.case.matlab +% ^^^ meta.case.declaration.matlab +% ^^^^ keyword.control.switch.case.matlab +% ^^^ meta.case.declaration.matlab + return; + case 'Y' +% ^^^^ keyword.control.switch.case.matlab +% ^^^ meta.case.declaration.matlab + return; + case 'Z' +% ^^^^ keyword.control.switch.case.matlab +% ^^^ meta.case.declaration.matlab + return; + otherwise +% ^^^^^^^^^ keyword.control.switch.otherwise.matlab + return; +end +% <-- keyword.control.end.switch.matlab + + +% https://github.com/mathworks/MATLAB-Language-grammar/issues/47 +switch obj.memberVariable +% <----- keyword.control.switch.matlab +% ^^^^^^^^^^^^^^^^^^ meta.switch.declaration.matlab + case { 0, 1, 2 } +% ^^^^ keyword.control.switch.case.matlab +% ^^^^^^^^^^^ meta.case.declaration.matlab + disp( 'dummy output - 0' ); + case 3 +% ^^^^ keyword.control.switch.case.matlab +% ^ meta.case.declaration.matlab + disp( 'dummy output - 1' ); + otherwise +% ^^^^^^^^^ keyword.control.switch.otherwise.matlab + disp( 'dummy output - otherwise'); + +end +% <-- keyword.control.end.switch.matlab + +switch memberVariable +% <----- keyword.control.switch.matlab +% ^^^^^^^^^^^^^^ meta.switch.declaration.matlab + case { 0, 1, 2 } + disp( 'dummy output - 0' ); + case 3 + disp( 'dummy output - 1' ); + otherwise +% ^^^^^^^^^ keyword.control.switch.otherwise.matlab + disp( 'dummy output - otherwise' ); +end +% <-- keyword.control.end.switch.matlab + + +% https://github.com/mathworks/MATLAB-Language-grammar/issues/52 +switch input +% <----- keyword.control.switch.matlab +% ^^^^^ meta.switch.declaration.matlab + case 0 +% ^^^^ keyword.control.switch.case.matlab +% ^ meta.case.declaration.matlab + disp foo + case { 1,2} +% ^^^^ keyword.control.switch.case.matlab +% ^^^^^^ meta.case.declaration.matlab + disp bar + case {3,4 } +% ^^^^ keyword.control.switch.case.matlab +% ^^^^^^ meta.case.declaration.matlab + disp foobar + case {5,6} +% ^^^^ keyword.control.switch.case.matlab +% ^^^^^ meta.case.declaration.matlab + disp baz +end +% <-- keyword.control.end.switch.matlab + + +% https://github.com/mathworks/MATLAB-Language-grammar/issues/64 +switch experiment +% <----- keyword.control.switch.matlab +% ^^^^^^^^^^ meta.switch.declaration.matlab + case 0 % Script testing w/ artery only output, text here +% ^^^^ keyword.control.switch.case.matlab +% ^ meta.case.declaration.matlab +% ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ comment.line.percentage.matlab +end +% <-- keyword.control.end.switch.matlab + + +a = @() 2; +b = @() 2; + +switch a() +% <----- keyword.control.switch.matlab +% ^^^ meta.switch.declaration.matlab + case 1 +% ^^^^ keyword.control.switch.case.matlab +% ^ meta.case.declaration.matlab + disp("yes") + case b() +% ^^^^ keyword.control.switch.case.matlab +% ^^^ meta.case.declaration.matlab + disp("wierd") + otherwise +% ^^^^^^^^^ keyword.control.switch.otherwise.matlab + disp("no") +end +% <-- keyword.control.end.switch.matlab \ No newline at end of file From 50092f3eb745c22d83701d587b0f28753194a380 Mon Sep 17 00:00:00 2001 From: Mark Hu Date: Sun, 16 Jun 2024 09:33:50 +0000 Subject: [PATCH 08/28] fix links --- test/t54LineContinuationInAnonymousFunctions.m | 2 +- test/t61ReadWriteOperations.m | 2 +- test/t80AnonymousFunctionArgument.m | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/test/t54LineContinuationInAnonymousFunctions.m b/test/t54LineContinuationInAnonymousFunctions.m index ce2dfa1..8f7112d 100644 --- a/test/t54LineContinuationInAnonymousFunctions.m +++ b/test/t54LineContinuationInAnonymousFunctions.m @@ -1,4 +1,4 @@ -% SYNTAX TEST "source.matlab" "LineContinationInAnonymousFunctions: https://github.com/mathworks/MATLAB-Language-grammar/pull/52" +% SYNTAX TEST "source.matlab" "LineContinationInAnonymousFunctions: https://github.com/mathworks/MATLAB-Language-grammar/pull/54" @(x, y) x.^2+y; diff --git a/test/t61ReadWriteOperations.m b/test/t61ReadWriteOperations.m index 33cbcdc..8c8543d 100644 --- a/test/t61ReadWriteOperations.m +++ b/test/t61ReadWriteOperations.m @@ -1,4 +1,4 @@ -% SYNTAX TEST "source.matlab" "ReadWriteOperations: https://github.com/mathworks/MATLAB-Language-grammar/pull/51" +% SYNTAX TEST "source.matlab" "ReadWriteOperations: https://github.com/mathworks/MATLAB-Language-grammar/pull/61" variable % <------- variable.other.readwrite.matlab diff --git a/test/t80AnonymousFunctionArgument.m b/test/t80AnonymousFunctionArgument.m index 6071676..121f738 100644 --- a/test/t80AnonymousFunctionArgument.m +++ b/test/t80AnonymousFunctionArgument.m @@ -1,4 +1,4 @@ -% SYNTAX TEST "source.matlab" "AnonymousFunctionArgument: https://github.com/mathworks/MATLAB-Language-grammar/pull/51" +% SYNTAX TEST "source.matlab" "AnonymousFunctionArgument: https://github.com/mathworks/MATLAB-Language-grammar/pull/80" q = integral(@(x) x.^2, 0, 1); % ^^^^^^^^^ meta.function.anonymous.matlab From c584804cacc8bbd6d0e3db74bc237803709c3bfb Mon Sep 17 00:00:00 2001 From: Mark Hu Date: Sun, 16 Jun 2024 10:00:49 +0000 Subject: [PATCH 09/28] fix while statement --- Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage | 11 +++---- test/snap/Account.m.snap | 5 ++- test/t78EOLcommentsInBlocks.m | 37 ++++++++++++++++++++++ 3 files changed, 46 insertions(+), 7 deletions(-) create mode 100644 test/t78EOLcommentsInBlocks.m diff --git a/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage b/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage index 137cf73..4ca29f3 100644 --- a/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage +++ b/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage @@ -692,17 +692,16 @@ name meta.while.declaration.matlab begin - \G + \G(?!$) end - (?<!\.{3}.*)(?:(?=([,;])(?![^(]*\)))|$) - endCaptures - - 1 + (?<!\.{3}.*)(?:(?=[,;](?![^(]*\)))|$) + patterns + include $self - + include diff --git a/test/snap/Account.m.snap b/test/snap/Account.m.snap index 9cc31d6..3876790 100644 --- a/test/snap/Account.m.snap +++ b/test/snap/Account.m.snap @@ -278,7 +278,10 @@ # ^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.while.matlab keyword.control.while.matlab # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.while.matlab meta.while.declaration.matlab # ^^^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.while.matlab meta.while.declaration.matlab variable.other.readwrite.matlab -# ^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.while.matlab meta.while.declaration.matlab +# ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.while.matlab meta.while.declaration.matlab +# ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.while.matlab meta.while.declaration.matlab keyword.operator.relational.matlab +# ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.while.matlab meta.while.declaration.matlab +# ^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.while.matlab meta.while.declaration.matlab constant.numeric.decimal.matlab > n = n + 1; #^^^^^^^^^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.while.matlab # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.while.matlab meta.assignment.variable.single.matlab variable.other.readwrite.matlab diff --git a/test/t78EOLcommentsInBlocks.m b/test/t78EOLcommentsInBlocks.m new file mode 100644 index 0000000..7868d55 --- /dev/null +++ b/test/t78EOLcommentsInBlocks.m @@ -0,0 +1,37 @@ +% SYNTAX TEST "source.matlab" "EOLcommentsInBlocks: https://github.com/mathworks/MATLAB-Language-grammar/pull/78" + + +while test % test +% <---- keyword.control.while.matlab +% ^^^^ meta.while.declaration.matlab +% ^^^^^^ comment.line.percentage.matlab + % test +end + +while (test) % test +% <---- keyword.control.while.matlab +% ^^^^^^ meta.while.declaration.matlab +% ^^^^^^ comment.line.percentage.matlab + % test +end + +while test; % test +% <---- keyword.control.while.matlab +% ^^^^ meta.while.declaration.matlab +% ^^^^^^ comment.line.percentage.matlab + % test +end + +for i = 1:10 % test +% <-- keyword.control.for.matlab +% ^^^^^ meta.for.declaration.matlab +% ^^^^^^ comment.line.percentage.matlab + % test +end + +if i == 10 % test +% <-- keyword.control.if.matlab +% ^^^^^^^ meta.if.declaration.matlab +% ^^^^^^ comment.line.percentage.matlab + % test +end \ No newline at end of file From 92919c60f6e5756d783999f36bc3d12cd63db7f9 Mon Sep 17 00:00:00 2001 From: Anton Edvinovich Pozharskiy Date: Wed, 17 Jul 2024 15:37:02 +0200 Subject: [PATCH 10/28] fix issue with functions in validation --- Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage | 4 ++++ test/t08PropertyValidation.m | 3 +++ 2 files changed, 7 insertions(+) diff --git a/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage b/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage index 9a3f03b..395c797 100644 --- a/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage +++ b/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage @@ -2792,6 +2792,10 @@ patterns + + include + #function_call + include #braced_validator_list diff --git a/test/t08PropertyValidation.m b/test/t08PropertyValidation.m index 7032314..8cce060 100644 --- a/test/t08PropertyValidation.m +++ b/test/t08PropertyValidation.m @@ -61,6 +61,9 @@ % ^ keyword.operator.assignment.matlab % ^^ constant.numeric.matlab % ^ punctuation.terminator.semicolon.matlab + PropFcnArgs {mustBeGreaterThan(PropFcnArgs, 2)} +% ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function-call.parens.matlab + % Ending commentary end end From 4bda0c1afc7c345a04e12bc3fd1761a6ee3c9d7c Mon Sep 17 00:00:00 2001 From: Anton Edvinovich Pozharskiy Date: Fri, 19 Jul 2024 10:02:24 +0200 Subject: [PATCH 11/28] fixing snap test --- test/README.md | 7 +++ test/snap/argumentValidation.m.snap | 92 ++++++++++++++++------------- 2 files changed, 57 insertions(+), 42 deletions(-) diff --git a/test/README.md b/test/README.md index b815632..30ebfad 100644 --- a/test/README.md +++ b/test/README.md @@ -4,6 +4,13 @@ The tests in this directory leverage: https://github.com/PanAeon/vscode-tmgrammar-test +# Test requirements + +The tests require xmllint which can be installed (on apt using linux distros) using +```bash +sudo apt install libxml2-utils +``` + # Running the tests From the root of the repo diff --git a/test/snap/argumentValidation.m.snap b/test/snap/argumentValidation.m.snap index 960ef31..964094c 100644 --- a/test/snap/argumentValidation.m.snap +++ b/test/snap/argumentValidation.m.snap @@ -65,11 +65,13 @@ # ^^^^^^^^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab variable.other.readwrite.matlab # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab # ^^^^^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab variable.other.readwrite.matlab -# ^^^^^^^^^^^^^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab -# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab variable.other.readwrite.matlab -# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab -# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab variable.other.readwrite.matlab -# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab +# ^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab +# ^^^^^^^^^^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab entity.name.function.matlab +# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab punctuation.section.parens.begin.matlab +# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab variable.other.readwrite.matlab +# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab punctuation.separator.comma.matlab +# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab variable.other.readwrite.matlab +# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab punctuation.section.parens.end.matlab # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab punctuation.section.block.end.matlab > method (1,:) char {mustBeMember(method,{'linear','cubic','spline'})} = 'linear' % End of line comment #^^^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab @@ -84,23 +86,24 @@ # ^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab storage.type.matlab # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab punctuation.section.block.begin.matlab -# ^^^^^^^^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab -# ^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab variable.other.readwrite.matlab -# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab -# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab punctuation.section.block.begin.matlab -# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.block.validation.matlab string.quoted.single.matlab punctuation.definition.string.begin.matlab -# ^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.block.validation.matlab string.quoted.single.matlab -# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.block.validation.matlab string.quoted.single.matlab punctuation.definition.string.end.matlab -# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.block.validation.matlab -# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.block.validation.matlab string.quoted.single.matlab punctuation.definition.string.begin.matlab -# ^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.block.validation.matlab string.quoted.single.matlab -# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.block.validation.matlab string.quoted.single.matlab punctuation.definition.string.end.matlab -# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.block.validation.matlab -# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.block.validation.matlab string.quoted.single.matlab punctuation.definition.string.begin.matlab -# ^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.block.validation.matlab string.quoted.single.matlab -# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.block.validation.matlab string.quoted.single.matlab punctuation.definition.string.end.matlab -# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab punctuation.section.block.end.matlab -# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab +# ^^^^^^^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab entity.name.function.matlab +# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab punctuation.section.parens.begin.matlab +# ^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab variable.other.readwrite.matlab +# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab punctuation.separator.comma.matlab +# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab punctuation.section.braces.begin.matlab +# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab meta.cell.literal.matlab string.quoted.single.matlab punctuation.definition.string.begin.matlab +# ^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab meta.cell.literal.matlab string.quoted.single.matlab +# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab meta.cell.literal.matlab string.quoted.single.matlab punctuation.definition.string.end.matlab +# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab meta.cell.literal.matlab punctuation.separator.comma.matlab +# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab meta.cell.literal.matlab string.quoted.single.matlab punctuation.definition.string.begin.matlab +# ^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab meta.cell.literal.matlab string.quoted.single.matlab +# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab meta.cell.literal.matlab string.quoted.single.matlab punctuation.definition.string.end.matlab +# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab meta.cell.literal.matlab punctuation.separator.comma.matlab +# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab meta.cell.literal.matlab string.quoted.single.matlab punctuation.definition.string.begin.matlab +# ^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab meta.cell.literal.matlab string.quoted.single.matlab +# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab meta.cell.literal.matlab string.quoted.single.matlab punctuation.definition.string.end.matlab +# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab punctuation.section.braces.end.matlab +# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab punctuation.section.parens.end.matlab # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab punctuation.section.block.end.matlab # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab keyword.operator.assignment.matlab @@ -142,21 +145,24 @@ # ^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab storage.type.matlab # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab punctuation.section.block.begin.matlab -# ^^^^^^^^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab -# ^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab variable.other.readwrite.matlab -# ^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab -# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab string.quoted.double.matlab punctuation.definition.string.begin.matlab -# ^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab string.quoted.double.matlab -# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab string.quoted.double.matlab punctuation.definition.string.end.matlab -# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab -# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab string.quoted.double.matlab punctuation.definition.string.begin.matlab -# ^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab string.quoted.double.matlab -# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab string.quoted.double.matlab punctuation.definition.string.end.matlab -# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab -# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab string.quoted.double.matlab punctuation.definition.string.begin.matlab -# ^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab string.quoted.double.matlab -# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab string.quoted.double.matlab punctuation.definition.string.end.matlab -# ^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab +# ^^^^^^^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab entity.name.function.matlab +# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab punctuation.section.parens.begin.matlab +# ^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab variable.other.readwrite.matlab +# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab punctuation.separator.comma.matlab +# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab punctuation.section.brackets.begin.matlab +# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab meta.brackets.matlab string.quoted.double.matlab punctuation.definition.string.begin.matlab +# ^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab meta.brackets.matlab string.quoted.double.matlab +# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab meta.brackets.matlab string.quoted.double.matlab punctuation.definition.string.end.matlab +# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab meta.brackets.matlab punctuation.separator.comma.matlab +# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab meta.brackets.matlab string.quoted.double.matlab punctuation.definition.string.begin.matlab +# ^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab meta.brackets.matlab string.quoted.double.matlab +# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab meta.brackets.matlab string.quoted.double.matlab punctuation.definition.string.end.matlab +# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab meta.brackets.matlab punctuation.separator.comma.matlab +# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab meta.brackets.matlab string.quoted.double.matlab punctuation.definition.string.begin.matlab +# ^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab meta.brackets.matlab string.quoted.double.matlab +# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab meta.brackets.matlab string.quoted.double.matlab punctuation.definition.string.end.matlab +# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab punctuation.section.brackets.end.matlab +# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab punctuation.section.parens.end.matlab # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab punctuation.section.block.end.matlab > end #^^^^ source.matlab meta.function.matlab meta.arguments.matlab @@ -177,11 +183,13 @@ # ^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab storage.type.matlab # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab punctuation.section.block.begin.matlab -# ^^^^^^^^^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab -# ^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab variable.other.readwrite.matlab -# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab punctuation.accessor.dot.matlab -# ^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab variable.other.property.matlab -# ^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab +# ^^^^^^^^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab entity.name.function.matlab +# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab punctuation.section.parens.begin.matlab +# ^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab variable.other.readwrite.matlab +# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab punctuation.accessor.dot.matlab +# ^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab variable.other.property.matlab +# ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab punctuation.section.parens.end.matlab +# ^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab # ^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.continuation.line.matlab punctuation.separator.continuation.line.matlab # ^^^^^^^^^^^^^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.continuation.line.matlab comment.continuation.line.matlab > mustBeReal} From d917df626c5ce8c915afa65404ff2d113ae5b5d5 Mon Sep 17 00:00:00 2001 From: Anton Edvinovich Pozharskiy Date: Wed, 17 Jul 2024 18:11:25 +0200 Subject: [PATCH 12/28] better classedf --- Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage b/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage index 395c797..c5971b7 100644 --- a/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage +++ b/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage @@ -784,7 +784,7 @@ begin - \G(\([^)]*\))?\s* + \G\s*(\((.|\s)*\))?(?=\s* \w+)\s*(\w+)\s* beginCaptures 1 @@ -854,12 +854,19 @@ + 3 + + comment + Class name + name + entity.name.type.class.matlab + patterns begin - \G\s*([a-zA-Z][a-zA-Z0-9_]*) + \G beginCaptures 1 From 1103d0667a1a7dd7d05b874eeec857bd0f7adec6 Mon Sep 17 00:00:00 2001 From: Anton Edvinovich Pozharskiy Date: Thu, 18 Jul 2024 11:53:47 +0200 Subject: [PATCH 13/28] actually better classdef, now only breaks on esoteric line continuations --- Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage | 129 ++++++++++----------- 1 file changed, 64 insertions(+), 65 deletions(-) diff --git a/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage b/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage index c5971b7..faa7654 100644 --- a/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage +++ b/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage @@ -783,78 +783,87 @@ patterns + name + storage.modifier.section.class.matlab + + begin - \G\s*(\((.|\s)*\))?(?=\s* \w+)\s*(\w+)\s* - beginCaptures - - 1 + \G\( + end + \)(?=\s*\w+) + patterns + - comment - Optional attributes - patterns - - - name - punctuation.section.parens.begin.matlab - match - (?<=\s)\( - - - name - punctuation.section.parens.end.matlab - match - \)\z - + name + punctuation.separator.modifier.comma.matlab + match + , + + + name + storage.modifier.class.matlab + match + [a-zA-Z][a-zA-Z0-9_]* + + + begin + (=)\s* + beginCaptures + + 1 name - punctuation.separator.modifier.comma.matlab - match - , + keyword.operator.assignment.matlab + + end + (?=\)|,) + patterns + name - storage.modifier.class.matlab + constant.language.boolean.matlab match - [a-zA-Z][a-zA-Z0-9_]* + true|false - begin - (=)\s* - beginCaptures - - 1 - - name - keyword.operator.assignment.matlab - - - end - (?=\)|,) - patterns - - - name - constant.language.boolean.matlab - match - true|false - - - include - #string - - + include + #string include - #comments + #curly_brackets include - #line_continuation + #line_continuations - 3 + + include + #comments + + + include + #line_continuation + + + include + #comments + + + include + #line_continuation + + + + + begin + \s*(\w+) + beginCaptures + + 1 comment Class name @@ -862,21 +871,13 @@ entity.name.type.class.matlab + end + (?<!\.{3})(?=\s*%|\n) patterns begin \G - beginCaptures - - 1 - - comment - Class name - name - entity.name.type.class.matlab - - end (?<!\.{3})(?=\n) patterns @@ -947,8 +948,6 @@ #line_continuation - end - (?<!\.{3})(?=\s*%|\n) From f21d59ae89b5a0ca2e9b087c15e00ef2f4540858 Mon Sep 17 00:00:00 2001 From: Anton Edvinovich Pozharskiy Date: Thu, 18 Jul 2024 14:06:17 +0200 Subject: [PATCH 14/28] add comment regarding limitations --- Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage b/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage index faa7654..ca8c7f1 100644 --- a/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage +++ b/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage @@ -785,8 +785,8 @@ name storage.modifier.section.class.matlab - - + comment + This breaks if there is a line continuation between end of attrs and name, but works for line continuations inside attrs. Line continuations are a mistake. begin \G\( end From f4e2794e1949b605f1d72a93999c12761c87cede Mon Sep 17 00:00:00 2001 From: Anton Edvinovich Pozharskiy Date: Thu, 18 Jul 2024 14:06:29 +0200 Subject: [PATCH 15/28] add test --- test/t87ClassAttributes.m | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 test/t87ClassAttributes.m diff --git a/test/t87ClassAttributes.m b/test/t87ClassAttributes.m new file mode 100644 index 0000000..bcd2364 --- /dev/null +++ b/test/t87ClassAttributes.m @@ -0,0 +1,5 @@ +classdef (AllowedSubclasses = {?SubClass1,?SubClass2}) SuperClass +% ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ storage.modifier.section.class.matlab +% ^^^^^^^^^^^^^^^^^^^^^^^ meta.cell.literal.matlab +% ^^^^^^^^^^ entity.name.type.class.matlab +end \ No newline at end of file From 587115397cd459a6214e6160e7428a243b53f241 Mon Sep 17 00:00:00 2001 From: Anton Edvinovich Pozharskiy Date: Thu, 18 Jul 2024 14:51:06 +0200 Subject: [PATCH 16/28] fix typo --- Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage b/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage index ca8c7f1..b2c6966 100644 --- a/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage +++ b/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage @@ -836,7 +836,7 @@ include - #line_continuations + #line_continuation From 5f5c93a1a7f4f61705560d395136ccc047b2866e Mon Sep 17 00:00:00 2001 From: Anton Edvinovich Pozharskiy Date: Thu, 18 Jul 2024 16:21:01 +0200 Subject: [PATCH 17/28] fix duplicated rules and add support for metaclass literals --- Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage | 45 ++++++++++++++++++---- 1 file changed, 37 insertions(+), 8 deletions(-) diff --git a/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage b/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage index b2c6966..34f4fc3 100644 --- a/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage +++ b/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage @@ -826,6 +826,43 @@ match true|false + + name + meta.metaclass.matlab + begin + (\?) + beginCaptures + + 1 + + name + keyword.operator.other.question.matlab + + + end + (?=\)|,) + patterns + + + name + entity.other.class.matlab + match + (?<=[\s.<])[a-zA-Z][a-zA-Z0-9_]*(?=\s|,|\)) + + + name + entity.name.namespace.matlab + match + [a-zA-Z][a-zA-Z0-9_]* + + + name + punctuation.accessor.dot.matlab + match + \. + + + include #string @@ -848,14 +885,6 @@ include #line_continuation - - include - #comments - - - include - #line_continuation - From 7de6a0ccdc89c0e8c25ed1488e4f814829793a5d Mon Sep 17 00:00:00 2001 From: Anton Edvinovich Pozharskiy Date: Fri, 19 Jul 2024 10:32:58 +0200 Subject: [PATCH 18/28] fix test and allow comments in classdef line --- Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage | 20 ++++++++++++-------- test/t87ClassAttributes.m | 5 +++-- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage b/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage index 34f4fc3..3026c3f 100644 --- a/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage +++ b/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage @@ -911,6 +911,14 @@ (?<!\.{3})(?=\n) patterns + + include + #comments + + + include + #line_continuation + comment Optional inheritance operator @@ -958,14 +966,6 @@ match & - - include - #comments - - - include - #line_continuation - @@ -978,6 +978,10 @@ + + include + #comments + diff --git a/test/t87ClassAttributes.m b/test/t87ClassAttributes.m index bcd2364..b41560b 100644 --- a/test/t87ClassAttributes.m +++ b/test/t87ClassAttributes.m @@ -1,5 +1,6 @@ +% SYNTAX TEST "source.matlab" "Property validation: https://github.com/mathworks/MATLAB-Language-grammar/issues/87" classdef (AllowedSubclasses = {?SubClass1,?SubClass2}) SuperClass % ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ storage.modifier.section.class.matlab -% ^^^^^^^^^^^^^^^^^^^^^^^ meta.cell.literal.matlab +% ^^^^^^^^^^^^^^^^^^^^^ meta.cell.literal.matlab % ^^^^^^^^^^ entity.name.type.class.matlab -end \ No newline at end of file +end From 1e95d73f6f480290de12351996d57f1895ca378d Mon Sep 17 00:00:00 2001 From: Anton Edvinovich Pozharskiy Date: Thu, 18 Jul 2024 18:18:10 +0200 Subject: [PATCH 19/28] parse metaclass correctly --- Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage | 32 +++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage b/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage index 3026c3f..5f11e77 100644 --- a/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage +++ b/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage @@ -114,6 +114,10 @@ include #curly_brackets + + include + #metaclass_literal + rules_after_command_dual @@ -2992,7 +2996,7 @@ name variable.other.readwrite.matlab match - (?<![a-zA-Z0-9_]|\.)[a-zA-Z][a-zA-Z0-9_]*(?![a-zA-Z0-9_]|(?:\(|\{|\.\()) + (?<![a-zA-Z0-9_]|\.|\?)[a-zA-Z][a-zA-Z0-9_]*(?![a-zA-Z0-9_]|(?:\(|\{|\.\()) property_access @@ -3003,6 +3007,32 @@ match \. + metaclass_literal + + comment + Accessing a metaclass via the ? operator + name + meta.metaclass.matlab + begin + (?<=\?)(?=[a-zA-Z]) + end + (?<=[a-zA-Z0-9_])(?![a-zA-Z0-9_]|\.|\(|{) + patterns + + + name + entity.other.class.matlab + match + (?<=[.\?])[a-zA-Z][a-zA-Z0-9_]*(?![a-zA-Z0-9_.]) + + + name + entity.name.namespace.matlab + match + [a-zA-Z][a-zA-Z0-9_]* + + + From 4278a23da770899a809da7dbec02eb73e7790fb9 Mon Sep 17 00:00:00 2001 From: Anton Edvinovich Pozharskiy Date: Thu, 18 Jul 2024 18:22:41 +0200 Subject: [PATCH 20/28] convert classdef to allow for metaclass on rhs of assign --- Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage | 43 +++++----------------- 1 file changed, 9 insertions(+), 34 deletions(-) diff --git a/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage b/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage index 5f11e77..a116e88 100644 --- a/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage +++ b/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage @@ -831,41 +831,16 @@ true|false + comment + Metadata query for class properties name - meta.metaclass.matlab - begin - (\?) - beginCaptures - - 1 - - name - keyword.operator.other.question.matlab - - - end - (?=\)|,) - patterns - - - name - entity.other.class.matlab - match - (?<=[\s.<])[a-zA-Z][a-zA-Z0-9_]*(?=\s|,|\)) - - - name - entity.name.namespace.matlab - match - [a-zA-Z][a-zA-Z0-9_]* - - - name - punctuation.accessor.dot.matlab - match - \. - - + keyword.operator.other.question.matlab + match + (?<!\w)\?(?=\w) + + + include + #metaclass_literal include From 9772a5a36bdb94ab79b81157ff005a78950304eb Mon Sep 17 00:00:00 2001 From: Anton Edvinovich Pozharskiy Date: Fri, 19 Jul 2024 10:59:18 +0200 Subject: [PATCH 21/28] add unit test --- test/t89MetaclassLiterals.m | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 test/t89MetaclassLiterals.m diff --git a/test/t89MetaclassLiterals.m b/test/t89MetaclassLiterals.m new file mode 100644 index 0000000..c597d57 --- /dev/null +++ b/test/t89MetaclassLiterals.m @@ -0,0 +1,17 @@ +% SYNTAX TEST "source.matlab" "Property validation: https://github.com/mathworks/MATLAB-Language-grammar/issues/89" +classdef (AllowedSubclasses = {?SubClass1,?namespace1.SubClass2}) SuperClass +% ^^^^^^^^^ meta.metaclass.matlab entity.other.class.matlab +% ^^^^^^^^^^^^^^^^^^^^ meta.metaclass.matlab +% ^^^^^^^^^^ entity.name.namespace.matlab +% ^^^^^^^^^ entity.other.class.matlab + methods + function foo() + x = ?namespace2.cls +% ^^^^^^^^^^^^^^ meta.metaclass.matlab +% ^^^^^^^^^^ entity.name.namespace.matlab +% ^^^ entity.other.class.matlab + y = ?MyClass +% ^^^^^^^ meta.metaclass.matlab entity.other.class.matlab + end + end +end From 5f142da38f1bc24113fb6ab80a07948f3eb451ab Mon Sep 17 00:00:00 2001 From: Anton Edvinovich Pozharskiy Date: Mon, 22 Jul 2024 09:46:05 +0200 Subject: [PATCH 22/28] fix name in test --- test/t89MetaclassLiterals.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/t89MetaclassLiterals.m b/test/t89MetaclassLiterals.m index c597d57..be88c75 100644 --- a/test/t89MetaclassLiterals.m +++ b/test/t89MetaclassLiterals.m @@ -1,4 +1,4 @@ -% SYNTAX TEST "source.matlab" "Property validation: https://github.com/mathworks/MATLAB-Language-grammar/issues/89" +% SYNTAX TEST "source.matlab" "Metaclasses: https://github.com/mathworks/MATLAB-Language-grammar/issues/89" classdef (AllowedSubclasses = {?SubClass1,?namespace1.SubClass2}) SuperClass % ^^^^^^^^^ meta.metaclass.matlab entity.other.class.matlab % ^^^^^^^^^^^^^^^^^^^^ meta.metaclass.matlab From 044445bd1c23ae2848b4df7fa768b90b703e95dd Mon Sep 17 00:00:00 2001 From: dlilley Date: Fri, 13 Sep 2024 13:13:09 -0400 Subject: [PATCH 23/28] Fix grammar when there is a line continuation after class attributes --- Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage | 8 +++++--- test/t93ContinuationAfterClassAttributes.m | 17 +++++++++++++++++ 2 files changed, 22 insertions(+), 3 deletions(-) create mode 100644 test/t93ContinuationAfterClassAttributes.m diff --git a/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage b/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage index a116e88..143e386 100644 --- a/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage +++ b/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage @@ -789,12 +789,10 @@ name storage.modifier.section.class.matlab - comment - This breaks if there is a line continuation between end of attrs and name, but works for line continuations inside attrs. Line continuations are a mistake. begin \G\( end - \)(?=\s*\w+) + \) patterns @@ -961,6 +959,10 @@ include #comments + + include + #line_continuation + diff --git a/test/t93ContinuationAfterClassAttributes.m b/test/t93ContinuationAfterClassAttributes.m new file mode 100644 index 0000000..a6c90e6 --- /dev/null +++ b/test/t93ContinuationAfterClassAttributes.m @@ -0,0 +1,17 @@ +% SYNTAX TEST "source.matlab" "Line continuation after class attributes: https://github.com/mathworks/MATLAB-Language-grammar/issues/93" + +% Case 1: Line continuation without attributes +classdef ... +% ^^^ meta.class.declaration.matlab punctuation.separator.continuation.line.matlab + Class1 +% ^^^^^^ meta.class.declaration.matlab entity.name.type.class.matlab +end + +% Case 2: Line continuation with attributes +classdef (Abstract) ... +% ^^^^^^^^^^^^^^ meta.class.declaration.matlab +% ^^^^^^^^^^ storage.modifier.section.class.matlab +% ^^^ punctuation.separator.continuation.line.matlab + Class2 +% ^^^^^^ meta.class.declaration.matlab entity.name.type.class.matlab +end \ No newline at end of file From 9756824465678baacea1619d67a5e745690bf8f5 Mon Sep 17 00:00:00 2001 From: Anton Edvinovich Pozharskiy Date: Tue, 23 Jul 2024 15:28:38 +0200 Subject: [PATCH 24/28] fixed attribute parsing in properties methods and events --- Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage | 66 +++++++++++++++++++--- 1 file changed, 59 insertions(+), 7 deletions(-) diff --git a/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage b/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage index 143e386..8133c3e 100644 --- a/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage +++ b/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage @@ -991,6 +991,12 @@ patterns + + name + punctuation.separator.modifier.comma.matlab + match + , + name storage.modifier.properties.matlab @@ -1009,7 +1015,7 @@ end - ,|(?=\)) + (?=\)|,) patterns @@ -1022,7 +1028,17 @@ name storage.modifier.access.matlab match - public|protected|private + public|protected|private|immutable + + + include + #curly_brackets + + + name + constant.integer.matlab + match + [0-9]+ @@ -1075,6 +1091,12 @@ patterns + + name + punctuation.separator.modifier.comma.matlab + match + , + name storage.modifier.methods.matlab @@ -1083,9 +1105,17 @@ begin - =\s* + (=)\s* end - ,|(?=\)) + (?=\)|,) + beginCaptures + + 1 + + name + keyword.operator.assignment.matlab + + patterns @@ -1100,6 +1130,10 @@ match public|protected|private + + include + #curly_brackets + @@ -1149,15 +1183,29 @@ name - variable.parameter.events.matlab + punctuation.separator.modifier.comma.matlab + match + , + + + name + storage.modifier.events.matlab match [a-zA-Z][a-zA-Z0-9_]* begin - =\s* + (=)\s* + beginCaptures + + 1 + + name + keyword.operator.assignment.matlab + + end - ,|(?=\)) + (?=\)|,) patterns @@ -1172,6 +1220,10 @@ match public|protected|private + + include + #curly_brackets + From 74b8495f29a22cf085fbaf349826fc57f0e0a3aa Mon Sep 17 00:00:00 2001 From: Anton Edvinovich Pozharskiy Date: Thu, 28 Nov 2024 15:30:54 +0100 Subject: [PATCH 25/28] update fixes --- Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage | 40 ++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage b/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage index 8133c3e..a5486ef 100644 --- a/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage +++ b/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage @@ -1018,6 +1018,10 @@ (?=\)|,) patterns + + include + #string + name constant.language.boolean.matlab @@ -1034,6 +1038,10 @@ include #curly_brackets + + include + #metaclass_literal + name constant.integer.matlab @@ -1118,6 +1126,10 @@ patterns + + include + #string + name constant.language.boolean.matlab @@ -1128,12 +1140,22 @@ name storage.modifier.access.matlab match - public|protected|private + public|protected|private|immutable include #curly_brackets + + include + #metaclass_literal + + + name + constant.integer.matlab + match + [0-9]+ + @@ -1208,6 +1230,10 @@ (?=\)|,) patterns + + include + #string + name constant.language.boolean.matlab @@ -1218,12 +1244,22 @@ name storage.modifier.access.matlab match - public|protected|private + public|protected|private|immutable include #curly_brackets + + include + #metaclass_literal + + + name + constant.integer.matlab + match + [0-9]+ + From c25b3c1276dce1b280bac0532e088e6bb1a1f2fc Mon Sep 17 00:00:00 2001 From: Anton Edvinovich Pozharskiy Date: Thu, 28 Nov 2024 15:35:28 +0100 Subject: [PATCH 26/28] add test --- test/t95AttributeParsing.m | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 test/t95AttributeParsing.m diff --git a/test/t95AttributeParsing.m b/test/t95AttributeParsing.m new file mode 100644 index 0000000..6d9545c --- /dev/null +++ b/test/t95AttributeParsing.m @@ -0,0 +1,15 @@ +% SYNTAX TEST "source.matlab" "Property etc. attribute parsing: https://github.com/mathworks/MATLAB-Language-grammar/issues/95" +classdef Class + % Some properties + properties (SetAccess=public, GetAccess={?foo.bar.baz}) +% ^^^^^^^^^^^^ meta.cell.literal.matlab + end + + events (Hidden=true, ListenAccess={?foo.bar}, NotifyAccess=?bar.baz) +% ^^^^^^^^ meta.cell.literal.matlab + end + + methods (Access=?bar.baz, Abstract=false) +% ^^^^^^^ meta.metaclass.matlab + end +end From 8f4f7966782b2cfbe8f34f26760722c996aad2e1 Mon Sep 17 00:00:00 2001 From: Anton Edvinovich Pozharskiy Date: Thu, 28 Nov 2024 15:38:16 +0100 Subject: [PATCH 27/28] update snap tests --- test/snap/Account.m.snap | 7 ++++--- test/snap/PropertyValidation.m.snap | 14 +++++++------- test/snap/controlFlow.m.snap | 4 ++-- test/snap/lineContinuations.m.snap | 2 +- 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/test/snap/Account.m.snap b/test/snap/Account.m.snap index 3876790..629e60b 100644 --- a/test/snap/Account.m.snap +++ b/test/snap/Account.m.snap @@ -355,9 +355,10 @@ #^^^^ source.matlab meta.class.matlab meta.events.matlab # ^^^^^^ source.matlab meta.class.matlab meta.events.matlab keyword.control.events.matlab # ^^ source.matlab meta.class.matlab meta.events.matlab -# ^^^^^^^^^^^^ source.matlab meta.class.matlab meta.events.matlab variable.parameter.events.matlab +# ^^^^^^^^^^^^ source.matlab meta.class.matlab meta.events.matlab storage.modifier.events.matlab # ^ source.matlab meta.class.matlab meta.events.matlab -# ^^ source.matlab meta.class.matlab meta.events.matlab +# ^ source.matlab meta.class.matlab meta.events.matlab keyword.operator.assignment.matlab +# ^ source.matlab meta.class.matlab meta.events.matlab # ^^^^^^^^^ source.matlab meta.class.matlab meta.events.matlab storage.modifier.access.matlab # ^^ source.matlab meta.class.matlab meta.events.matlab # ^ source.matlab meta.class.matlab meta.events.matlab comment.line.percentage.matlab punctuation.definition.comment.matlab @@ -401,4 +402,4 @@ # ^^^ source.matlab meta.class.matlab meta.enum.matlab keyword.control.end.enum.matlab >end #^^^ source.matlab meta.class.matlab storage.type.class.end.matlab -> +> \ No newline at end of file diff --git a/test/snap/PropertyValidation.m.snap b/test/snap/PropertyValidation.m.snap index 61dd9ed..5f0b555 100644 --- a/test/snap/PropertyValidation.m.snap +++ b/test/snap/PropertyValidation.m.snap @@ -10,18 +10,18 @@ # ^ source.matlab meta.class.matlab meta.properties.matlab # ^ source.matlab meta.class.matlab meta.properties.matlab keyword.operator.assignment.matlab # ^ source.matlab meta.class.matlab meta.properties.matlab -# ^ source.matlab meta.class.matlab meta.properties.matlab -# ^^^^^^ source.matlab meta.class.matlab meta.properties.matlab storage.modifier.access.matlab -# ^ source.matlab meta.class.matlab meta.properties.matlab -# ^ source.matlab meta.class.matlab meta.properties.matlab +# ^ source.matlab meta.class.matlab meta.properties.matlab string.quoted.single.matlab punctuation.definition.string.begin.matlab +# ^^^^^^ source.matlab meta.class.matlab meta.properties.matlab string.quoted.single.matlab +# ^ source.matlab meta.class.matlab meta.properties.matlab string.quoted.single.matlab punctuation.definition.string.end.matlab +# ^ source.matlab meta.class.matlab meta.properties.matlab punctuation.separator.modifier.comma.matlab # ^ source.matlab meta.class.matlab meta.properties.matlab # ^^^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab storage.modifier.properties.matlab # ^ source.matlab meta.class.matlab meta.properties.matlab # ^ source.matlab meta.class.matlab meta.properties.matlab keyword.operator.assignment.matlab # ^ source.matlab meta.class.matlab meta.properties.matlab -# ^ source.matlab meta.class.matlab meta.properties.matlab -# ^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab storage.modifier.access.matlab -# ^ source.matlab meta.class.matlab meta.properties.matlab +# ^ source.matlab meta.class.matlab meta.properties.matlab string.quoted.single.matlab punctuation.definition.string.begin.matlab +# ^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab string.quoted.single.matlab +# ^ source.matlab meta.class.matlab meta.properties.matlab string.quoted.single.matlab punctuation.definition.string.end.matlab # ^^ source.matlab meta.class.matlab meta.properties.matlab > % Commentary in the properties block #^^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab punctuation.whitespace.comment.leading.matlab diff --git a/test/snap/controlFlow.m.snap b/test/snap/controlFlow.m.snap index 4b3cf70..9265b0c 100644 --- a/test/snap/controlFlow.m.snap +++ b/test/snap/controlFlow.m.snap @@ -120,7 +120,7 @@ #^^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab # ^^^^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab keyword.control.elseif.matlab # ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab meta.elseif.declaration.matlab -# ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab meta.elseif.declaration.matlab variable.other.readwrite.matlab +# ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab meta.elseif.declaration.matlab variable.other.readwrite.matlab # ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab meta.elseif.declaration.matlab # ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab meta.elseif.declaration.matlab keyword.operator.relational.matlab # ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab meta.elseif.declaration.matlab @@ -147,7 +147,7 @@ # ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.else.matlab meta.function-call.parens.matlab punctuation.section.parens.end.matlab # ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.else.matlab punctuation.terminator.semicolon.matlab > end -#^^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.else.matlab +#^^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.else.matlab # ^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab keyword.control.end.if.matlab >catch ME #^^^^^ source.matlab meta.function.matlab meta.try.matlab meta.catch.matlab keyword.control.catch.matlab diff --git a/test/snap/lineContinuations.m.snap b/test/snap/lineContinuations.m.snap index 1e4d342..7c74011 100644 --- a/test/snap/lineContinuations.m.snap +++ b/test/snap/lineContinuations.m.snap @@ -78,7 +78,7 @@ # ^^^^^^^ source.matlab meta.function-call.parens.matlab meta.continuation.line.matlab comment.continuation.line.matlab > arg2 ... comment #^^^^ source.matlab meta.function-call.parens.matlab -# ^^^^ source.matlab meta.function-call.parens.matlab variable.other.readwrite.matlab +# ^^^^ source.matlab meta.function-call.parens.matlab variable.other.readwrite.matlab # ^ source.matlab meta.function-call.parens.matlab # ^^^ source.matlab meta.function-call.parens.matlab meta.continuation.line.matlab punctuation.separator.continuation.line.matlab # ^^^^^^^^ source.matlab meta.function-call.parens.matlab meta.continuation.line.matlab comment.continuation.line.matlab From 95882572ee9792c092c34a0ada6c12ee128e13dc Mon Sep 17 00:00:00 2001 From: Anton Edvinovich Pozharskiy Date: Thu, 28 Nov 2024 15:44:33 +0100 Subject: [PATCH 28/28] fix old test --- test/t08PropertyValidation.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/t08PropertyValidation.m b/test/t08PropertyValidation.m index 8cce060..1d1937f 100644 --- a/test/t08PropertyValidation.m +++ b/test/t08PropertyValidation.m @@ -3,10 +3,10 @@ properties (GetAccess = 'public', SetAccess = 'private') % ^^^^^^^^^ storage.modifier.properties.matlab % ^ keyword.operator.assignment.matlab -% ^^^^^^ storage.modifier.access.matlab +% ^^^^^^^^ string.quoted.single.matlab % ^^^^^^^^^ storage.modifier.properties.matlab % ^ keyword.operator.assignment.matlab -% ^^^^^^^ storage.modifier.access.matlab +% ^^^^^^^^^ string.quoted.single.matlab % Commentary in the properties block % ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ comment.line.percentage.matlab Prop % comment