branch: externals/matlab-mode
commit fe757ce2a4761d51be70e7b9574b68b967f295df
Author: John Ciolfi <[email protected]>
Commit: John Ciolfi <[email protected]>
matlab-ts-mode--ei: handle [foo.(thing){otherThing}]
---
matlab-ts-mode--ei.el | 17 ++++++++++-----
.../electric_indent_close_paren_open_brace.m | 3 +++
...ectric_indent_close_paren_open_brace_expected.m | 3 +++
...c_indent_close_paren_open_brace_expected_msgs.m | 3 +++
.../electric_indent_close_paren_open_brace.m | 3 +++
...tric_indent_close_paren_open_brace_expected.txt | 24 ++++++++++++++++++++++
6 files changed, 48 insertions(+), 5 deletions(-)
diff --git a/matlab-ts-mode--ei.el b/matlab-ts-mode--ei.el
index 53b5c67257..2b5f1f1b7e 100644
--- a/matlab-ts-mode--ei.el
+++ b/matlab-ts-mode--ei.el
@@ -148,7 +148,8 @@
;; Case: ") identifier" as in: propName (1, 1) double
;; arguments: g (1,1) {mustBeNumeric, mustBeReal}
- (,(rx bos ")" eos) ,(rx bos (or "identifier" "{") eos)
1)
+ (,(rx bos "dim-)" eos) "."
1)
+ (,(rx bos "prop-dim" eos) ,(rx bos "dim-)" eos)
0)
;; Case: @(x) ((ischar(x) || isstring(x)));
;; ^
@@ -291,10 +292,16 @@ be unary-op even though the node type is \"+\"."
;; TopTester: electric_indent_inspect_keyword_commands2.m
(setq node-type (concat node-type "-fcn")))
- ;; Case: lambda: @(x) ((ischar(x) || isstring(x)))
- ;; ^
- ((and (string= node-type ")") (string= parent-type "lambda"))
- (setq node-type "lambda-)")))
+ ;; Case: lambda: @(x) ((ischar(x) || isstring(x)))
+ ;; ^
+ ;; properties: foo1 (1, :) {mustBeNumeric, mustBeReal} = [0, 0, 0];
+ ;; ^
+ ((string= node-type ")")
+ (if (string= parent-type "lambda")
+ (setq node-type "lambda-)")
+ (if (string= parent-type "dimensions")
+ (setq node-type "dim-)"))
+ )))
(cons node node-type)))
diff --git
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_close_paren_open_brace.m
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_close_paren_open_brace.m
new file mode 100644
index 0000000000..4058d361ef
--- /dev/null
+++
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_close_paren_open_brace.m
@@ -0,0 +1,3 @@
+% -*- matlab-ts -*-
+
+info.something = [info.something tbl.(parentName){memberIDs(idx)}.UID];
diff --git
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_close_paren_open_brace_expected.m
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_close_paren_open_brace_expected.m
new file mode 100644
index 0000000000..917ae618ae
--- /dev/null
+++
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_close_paren_open_brace_expected.m
@@ -0,0 +1,3 @@
+% -*- matlab-ts -*-
+
+info.something = [info.something, tbl.(parentName){memberIDs(idx)}.UID];
diff --git
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_close_paren_open_brace_expected_msgs.m
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_close_paren_open_brace_expected_msgs.m
new file mode 100644
index 0000000000..3d2a48c72f
--- /dev/null
+++
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_close_paren_open_brace_expected_msgs.m
@@ -0,0 +1,3 @@
+% -*- matlab-ts -*- % <{Matched rule: (matlab-ts-mode--i-top-level
matlab-ts-mode--column-0 0)}>
+
+info.something = [info.something, tbl.(parentName){memberIDs(idx)}.UID]; %
<{Matched rule: (matlab-ts-mode--i-top-level matlab-ts-mode--column-0 0)}>
diff --git
a/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_close_paren_open_brace.m
b/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_close_paren_open_brace.m
new file mode 100644
index 0000000000..4058d361ef
--- /dev/null
+++
b/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_close_paren_open_brace.m
@@ -0,0 +1,3 @@
+% -*- matlab-ts -*-
+
+info.something = [info.something tbl.(parentName){memberIDs(idx)}.UID];
diff --git
a/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_close_paren_open_brace_expected.txt
b/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_close_paren_open_brace_expected.txt
new file mode 100644
index 0000000000..63245a139d
--- /dev/null
+++
b/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_close_paren_open_brace_expected.txt
@@ -0,0 +1,24 @@
+# -*- t-utils-ts-parse-tree -*-
+(source_file<1,94> (comment[1,20]@{% -*- matlab-ts -*-}@)
+ (assignment<22,92>
+ left: (field_expression<22,36> object: (identifier[22,26]@{info}@) .[26,27]
field: (identifier[27,36]@{something}@))
+ =[37,38]
+ right:
+ (matrix<39,92> [[39,40]
+ (row<40,91>
+ (field_expression<40,54> object: (identifier[40,44]@{info}@) .[44,45]
field: (identifier[45,54]@{something}@))
+ ,[55,55]
+ (field_expression<55,91> object: (identifier[55,58]@{tbl}@) .[58,59]
+ field:
+ (function_call<59,87>
+ name: (indirect_access<59,71> ([59,60]
(identifier[60,70]@{parentName}@) )[70,71])
+ {[71,72]
+ (arguments<72,86>
+ argument:
+ (function_call<72,86> name: (identifier[72,81]@{memberIDs}@) ([81,82]
+ (arguments<82,85> argument: (identifier[82,85]@{idx}@))
+ )[85,86]))
+ }[86,87])
+ .[87,88] (identifier[88,91]@{UID}@)))
+ ][91,92]))
+ ;[92,93] \n[93,94])