branch: externals/matlab-mode
commit 1e70a13d626ddc679bff47d5c2e995fd0ddef7ba
Author: John Ciolfi <[email protected]>
Commit: John Ciolfi <[email protected]>
matlab-ts-mode--ei: handle keyword used as a variable
---
matlab-ts-mode--ei.el | 6 ++--
matlab-ts-mode.el | 2 +-
.../electric_indent_keyword_as_var.m | 11 ++++++
.../electric_indent_keyword_as_var_expected.m | 11 ++++++
.../electric_indent_keyword_as_var_expected_msgs.m | 11 ++++++
.../electric_indent_keyword_as_var.m | 11 ++++++
.../electric_indent_keyword_as_var_expected.txt | 41 ++++++++++++++++++++++
7 files changed, 89 insertions(+), 4 deletions(-)
diff --git a/matlab-ts-mode--ei.el b/matlab-ts-mode--ei.el
index 6d471884fa..029a1e9073 100644
--- a/matlab-ts-mode--ei.el
+++ b/matlab-ts-mode--ei.el
@@ -177,10 +177,10 @@
("." ,(rx bos "[" eos)
1)
;; Case: foo(1) or foo.bar
- (,(rx bos "identifier" eos) ,(rx bos (or "(" "{") eos)
0)
+ ;; Case: events(thing), enumeration(thing), methods(thing)
+ (,(rx bos (or (seq (1+ (in "a-z")) "-fcn") "identifier") eos) ,(rx bos
(or "(" "{") eos) 0)
(,(rx bos "identifier" eos) "."
1)
- ;; Case: {events(thing)}, {enumeration(thing)}, {methods(thing)}
- (,(rx "-fcn" eos) "."
0)
+ (,(rx "-fcn" eos) "."
1)
;; Case: number in matrix: [123 456]
(,(rx bos "number" eos) "."
1)
diff --git a/matlab-ts-mode.el b/matlab-ts-mode.el
index 8435b05d1b..bb4894a02b 100644
--- a/matlab-ts-mode.el
+++ b/matlab-ts-mode.el
@@ -990,7 +990,7 @@ Example, disp variable is overriding the disp builtin
function:
)
"The matlab-ts-mode font-lock settings.")
-;;; Indent
+;;; Indent (see doc/matlab_code_indent.org)
(defvar matlab-ts-mode--indent-level 4
"Indentation level.")
diff --git
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_keyword_as_var.m
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_keyword_as_var.m
new file mode 100644
index 0000000000..b6cfd75875
--- /dev/null
+++
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_keyword_as_var.m
@@ -0,0 +1,11 @@
+% -*- matlab-ts -*-
+
+function out = electric_indent_keyword_as_var(in1, arguments)
+ arguments
+ in1 {mustBeTextScalar}
+ arguments cell{mustBeText}={ }
+ end
+
+ % following both returns the first entry of arguments, then the arguments,
and a {1}!
+ out = {in1 , arguments{1} arguments {1}};
+end
diff --git
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_keyword_as_var_expected.m
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_keyword_as_var_expected.m
new file mode 100644
index 0000000000..1a889c4423
--- /dev/null
+++
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_keyword_as_var_expected.m
@@ -0,0 +1,11 @@
+% -*- matlab-ts -*-
+
+function out = electric_indent_keyword_as_var(in1, arguments)
+ arguments
+ in1 {mustBeTextScalar}
+ arguments cell {mustBeText} = {}
+ end
+
+ % following both returns the first entry of arguments, then the arguments,
and a {1}!
+ out = {in1, arguments{1}, arguments, {1}};
+end
diff --git
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_keyword_as_var_expected_msgs.m
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_keyword_as_var_expected_msgs.m
new file mode 100644
index 0000000000..34ca7e2dd5
--- /dev/null
+++
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_keyword_as_var_expected_msgs.m
@@ -0,0 +1,11 @@
+% -*- matlab-ts -*- % <{Matched rule: (matlab-ts-mode--i-top-level
matlab-ts-mode--column-0 0)}>
+
+function out = electric_indent_keyword_as_var(in1, arguments) % <{Matched
rule: (matlab-ts-mode--i-top-level matlab-ts-mode--column-0 0)}>
+ arguments % <{Matched rule: ((parent-is "\\`function_definition\\'")
parent matlab-ts-mode--set-function-indent-level-for-gp)}>
+ in1 {mustBeTextScalar} % <{Matched rule: ((node-is
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
parent 4)}>
+ arguments cell {mustBeText} = {} % <{Matched rule: ((node-is
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
parent 4)}>
+ end % <{Matched rule: ((node-is
"\\`\\(?:catch_clause\\|e\\(?:lse\\(?:\\(?:if\\)?_clause\\)\\|nd\\)\\)\\'")
parent 0)}>
+
+ % following both returns the first entry of arguments, then the arguments,
and a {1}! % <{Matched rule: ((parent-is "\\`function_definition\\'") parent
matlab-ts-mode--set-function-indent-level-for-gp)}>
+ out = {in1, arguments{1}, arguments, {1}}; % <{Matched rule: ((parent-is
"\\`function_definition\\'") parent
matlab-ts-mode--set-function-indent-level-for-gp)}>
+end % <{Matched rule: ((node-is
"\\`\\(?:catch_clause\\|e\\(?:lse\\(?:\\(?:if\\)?_clause\\)\\|nd\\)\\)\\'")
parent 0)}>
diff --git
a/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_keyword_as_var.m
b/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_keyword_as_var.m
new file mode 100644
index 0000000000..b6cfd75875
--- /dev/null
+++
b/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_keyword_as_var.m
@@ -0,0 +1,11 @@
+% -*- matlab-ts -*-
+
+function out = electric_indent_keyword_as_var(in1, arguments)
+ arguments
+ in1 {mustBeTextScalar}
+ arguments cell{mustBeText}={ }
+ end
+
+ % following both returns the first entry of arguments, then the arguments,
and a {1}!
+ out = {in1 , arguments{1} arguments {1}};
+end
diff --git
a/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_keyword_as_var_expected.txt
b/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_keyword_as_var_expected.txt
new file mode 100644
index 0000000000..14a8f0748f
--- /dev/null
+++
b/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_keyword_as_var_expected.txt
@@ -0,0 +1,41 @@
+# -*- t-utils-ts-parse-tree -*-
+(source_file<1,322> (comment[1,20]@{% -*- matlab-ts -*-}@) \n[20,22]
+ (function_definition<22,321> function[22,30]
+ (function_output<31,36> (identifier[31,34]@{out}@) =[35,36])
+ name: (identifier[37,67]@{electric_indent_keyword_as_var}@)
+ (function_arguments<67,83> ([67,68] arguments: (identifier[68,71]@{in1}@)
,[71,72]
+ (identifier<73,82> arguments[73,82])
+ )[82,83])
+ \n[83,84]
+ (arguments_statement<88,180> arguments[88,97] \n[97,98]
+ (property<106,128> name: (identifier[106,109]@{in1}@)
+ (validation_functions<110,128> {[110,111]
(identifier[111,127]@{mustBeTextScalar}@) }[127,128]))
+ \n[128,129]
+ (property<137,172>
+ name: (identifier<137,146> arguments[137,146])
+ (identifier[151,155]@{cell}@)
+ (validation_functions<155,167> {[155,156]
(identifier[156,166]@{mustBeText}@) }[166,167])
+ (default_value<167,172> =[167,168]
+ (cell<168,172> {[168,169] }[171,172])))
+ \n[172,173] end[177,180])
+ (comment[186,271]@{% following both returns the first entry of argume...}@)
+ (block<276,318>
+ (assignment<276,316> left: (identifier[276,279]@{out}@) =[280,281]
+ right:
+ (cell<282,316> {[282,283]
+ (row<283,315> (identifier[283,286]@{in1}@) ,[287,288]
+ (function_call<289,301>
+ name: (identifier<289,298> arguments[289,298])
+ {[298,299]
+ (arguments<299,300> argument: (number[299,300]@{1}@))
+ }[300,301])
+ ,[302,302]
+ (identifier<302,311> arguments[302,311])
+ ,[312,312]
+ (cell<312,315> {[312,313]
+ (row<313,314> (number[313,314]@{1}@))
+ }[314,315]))
+ }[315,316]))
+ ;[316,317] \n[317,318])
+ end[318,321])
+ \n[321,322])