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])

Reply via email to