branch: externals/matlab-mode
commit d81e5a6510e2ead77a6d9449bcc8b4145cfc9af6
Author: John Ciolfi <[email protected]>
Commit: John Ciolfi <[email protected]>

    matlab-ts-mode: fix indent-region problem where offset wasn't fixed
---
 matlab-ts-mode.el                                  | 115 +++++++++------------
 .../indent_cell2_expected_msgs.m                   |  80 +++++++-------
 .../indent_cell_expected_msgs.m                    |  16 +--
 .../indent_class_prop_continued2_expected_msgs.m   |  18 ++--
 .../indent_cont_cell_issue75_expected_msgs.m       |   6 +-
 .../indent_cont_properties_expected_msgs.m         |   4 +-
 ...> indent_failure_with_indent_region_expected.m} |   7 +-
 ...dent_failure_with_indent_region_expected_msgs.m |  10 ++
 .../indent_fcn_ellipsis_expected_msgs.m            |   2 +-
 .../indent_line_continuation_row_expected_msgs.m   |   2 +-
 .../indent_matrix_expected_msgs.m                  |  20 ++--
 .../indent_matrix_issue44_expected_msgs.m          |   2 +-
 .../indent_old_indents_expected_msgs.m             |  52 +++++-----
 .../indent_old_indents_for_typing_expected_msgs.m  |  52 +++++-----
 .../indent_ranges_expected_msgs.m                  |   4 +-
 15 files changed, 189 insertions(+), 201 deletions(-)

diff --git a/matlab-ts-mode.el b/matlab-ts-mode.el
index b33605e89d..99bea5cedd 100644
--- a/matlab-ts-mode.el
+++ b/matlab-ts-mode.el
@@ -1421,33 +1421,6 @@ For optional _NODE, PARENT, and _BOL see 
`treesit-simple-indent-rules'."
     nil
     0))
 
-(defun matlab-ts-mode--row-indent-level (node parent _bol &rest _)
-  "Indent level for a NODE in PARENT cell or matrix."
-
-  ;; first-entry is the 2nd element, i.e. child 1. Child 0 is the "[" or "{".
-  ;; first-entry could be "line_continuation" or "row"
-  ;; "row" can also be empty, e.g. start-point == end-point as in
-  ;;       C = [
-  ;;             ...
-  ;;   TAB>      1 ...
-  ;;           ]
-  (let* ((first-entry (treesit-node-child parent 1))
-         first-start)
-    (if (and (not (equal node first-entry)) ;; point is not on first row
-             (equal (treesit-node-type first-entry) "row")
-             (not (= (setq first-start (treesit-node-start first-entry))
-                     (treesit-node-end first-entry))))
-        ;;         c = [2, 3;
-        ;;  TAB>        3, 4];
-        (let ((first-column (save-excursion
-                              (goto-char first-start)
-                              (current-column)))
-              (array-column (save-excursion
-                              (goto-char (treesit-node-start parent))
-                              (current-column))))
-          (- first-column array-column))
-      matlab-ts-mode--array-indent-level)))
-
 (defvar matlab-ts-mode--i-error-switch-matcher-pair)
 
 (defun matlab-ts-mode--i-error-switch-matcher (node _parent bol &rest _)
@@ -2294,9 +2267,9 @@ Example:
                            (treesit-node-start assign-node))
                          matlab-ts-mode--indent-level)))))))
 
-(defvar matlab-ts--i-arg-namespace-fcn-prop-anchor-value nil)
+(defvar matlab-ts-mode--i-arg-namespace-fcn-prop-anchor-value nil)
 
-(defun matlab-ts--i-arg-namespace-fcn-prop-matcher (node parent _bol &rest _)
+(defun matlab-ts-mode--i-arg-namespace-fcn-prop-matcher (node parent _bol 
&rest _)
   "Is NODE, PARENT a property default value?
 Example:
         properties (Constant)
@@ -2310,12 +2283,38 @@ Example:
                 (and (string= (treesit-node-type great-grand-parent) 
"default_value")
                      (let ((great-great-grand-parent (treesit-node-parent 
great-grand-parent)))
                        (and (string= (treesit-node-type 
great-great-grand-parent) "property")
-                            (setq 
matlab-ts--i-arg-namespace-fcn-prop-anchor-value
+                            (setq 
matlab-ts-mode--i-arg-namespace-fcn-prop-anchor-value
                                   (treesit-node-start 
great-great-grand-parent))))))))))
 
-(defun matlab-ts--i-arg-namespace-fcn-prop-anchor (_node _parent _bol &rest _)
-  "Return anchor for `matlab-ts--i-arg-namespace-fcn-prop-matcher'."
-  matlab-ts--i-arg-namespace-fcn-prop-anchor-value)
+(defun matlab-ts-mode--i-arg-namespace-fcn-prop-anchor (_node _parent _bol 
&rest _)
+  "Return anchor for `matlab-ts-mode--i-arg-namespace-fcn-prop-matcher'."
+  matlab-ts-mode--i-arg-namespace-fcn-prop-anchor-value)
+
+(defvar matlab-ts-mode--i-row-anchor-value nil)
+
+(defun matlab-ts-mode--i-row-matcher (node parent _bol &rest _)
+  "Is NODE, PARENT in a matrix with first row on the \"[\" line?
+Example:
+   m = [1, 2, ...
+        3, 4]       <== TAB to here."
+  (and node
+       (string= (treesit-node-type node) "row")
+       (string= (treesit-node-type parent) "matrix")
+       (save-excursion
+         (goto-char (treesit-node-start parent))
+         (forward-char)
+         (when (and (looking-at "[ \t]")
+                    (re-search-forward "[^ \t]" (line-end-position) t))
+           (backward-char))
+         ;; Have something after the "[", e.g. "[  123" or "[ ..."?
+         (when (and (looking-at "[^ \t\r\n]")
+                    (not (equal (treesit-node-type (treesit-node-at (point))) 
"line_continuation")))
+           (setq matlab-ts-mode--i-row-anchor-value (treesit-node-start 
(treesit-node-at (point))))
+           t))))
+
+(defun matlab-ts-mode--i-row-anchor (_node _parent _bol &rest _)
+  "Return anchor for `matlab-ts-mode--i-row-matcher'."
+  matlab-ts-mode--i-row-anchor-value)
 
 (defvar matlab-ts-mode--indent-rules
   `((matlab
@@ -2527,15 +2526,26 @@ Example:
      ;; <TAB>         1 ...
      ((parent-is ,(rx bos "parenthesis" eos)) parent 1)
 
+     ;; I-Rule:  a = [    2 ...       |   function a ...
+     ;; <TAB>             1 ...       |            = fcn
+     ((parent-is ,(rx bos (or "row" "function_output") eos)) parent 0)
+
+     ;; I-Rule: a = [1, 2, ...
+     ;;              3, 4]
+     ;; See: tests/test-matlab-ts-mode-indent-files/indent_matrix.m
+     (,#'matlab-ts-mode--i-row-matcher
+      ,#'matlab-ts-mode--i-row-anchor
+      0)
+      
      ;; I-Rule:  a = [   ...    |    a = { ...
      ;; <TAB>          2 ...    |          2 ...
      ;; See: tests/test-matlab-ts-mode-indent-files/indent_matrix.m
-     ((parent-is ,(rx bos (or "cell" "matrix") eos)) parent 
,#'matlab-ts-mode--row-indent-level)
+     ((parent-is ,(rx bos (or "cell" "matrix") eos)) parent 
,matlab-ts-mode--array-indent-level)
 
      ;; I-Rule:   cell1 = { ...
      ;; See: ./test-matlab-ts-mode-indent-xr-files/indent_xr_cell1.m
      ((n-p-gp nil ,(rx bos "line_continuation" eos) ,(rx bos (or "cell" 
"matrix") eos))
-      grand-parent ,#'matlab-ts-mode--row-indent-level)
+      grand-parent ,matlab-ts-mode--array-indent-level)
 
      ;; I-Rule: function args next line
      ;;           function someFunction(...
@@ -2551,10 +2561,6 @@ Example:
      ;; <TAB>              a, ... % comment    |                   b, ... % 
comment
      ((parent-is ,(rx bos (or "multioutput_variable" "function_arguments") 
eos)) parent 1)
 
-     ;; I-Rule:  a = [    2 ...       |   function a ...
-     ;; <TAB>             1 ...       |            = fcn
-     ((parent-is ,(rx bos (or "row" "function_output") eos)) parent 0)
-
      ;; I-Rule:  a = ...
      ;; <TAB>        1;
      ((n-p-gp nil nil ,(rx bos "assignment" eos)) grand-parent 
,matlab-ts-mode--indent-level)
@@ -2567,8 +2573,8 @@ Example:
      ;;                  property1 = containers.Map(...
      ;;        TAB>          {
      ;; See: 
tests/test-matlab-ts-mode-indent-files/indent_class_prop_continued2.m
-     (,#'matlab-ts--i-arg-namespace-fcn-prop-matcher
-      ,#'matlab-ts--i-arg-namespace-fcn-prop-anchor
+     (,#'matlab-ts-mode--i-arg-namespace-fcn-prop-matcher
+      ,#'matlab-ts-mode--i-arg-namespace-fcn-prop-anchor
       ,matlab-ts-mode--indent-level)
 
      ;; I-Rule:      someNamespace1.subNamespace2.myFunction( ...
@@ -3922,33 +3928,6 @@ so configuration variables of that mode, do not affect 
this mode.
     ;; Activate MATLAB script ";; heading" matlab-sections-minor-mode if needed
     (matlab-sections-auto-enable-on-mfile-type-fcn 
(matlab-ts-mode--mfile-type))
 
-    ;; TODO Indent
-    ;;           myVariable = struct( ...
-    ;;               'Short',  {1}, ...
-    ;;               'Long',   {100} ...
-    ;;      TAB>     );
-    ;;
-    ;; TODO C-x h M-x indent-region fails on this:
-    ;;          function foo
-    ;;              var_types = {
-    ;;                  'bool';
-    ;;                  'int8';
-    ;;                  'int8';
-    ;;                  'int8'
-    ;;                          };
-    ;;
-    ;;          end
-    ;;      Get:
-    ;;          function foo
-    ;;              var_types = {
-    ;;                            'bool';
-    ;;                  'int8';
-    ;;                  'int8';
-    ;;                  'int8'
-    ;;                          };
-    ;;
-    ;;          end
-    ;;
     ;; TODO [future] Indent - complex for statement
     ;;         function a = foo(inputArgument1)
     ;;             for (idx = (a.b.getStartValue(((inputArgument1 + 
someOtherFunction(b)) * 2 - ...
diff --git 
a/tests/test-matlab-ts-mode-indent-files/indent_cell2_expected_msgs.m 
b/tests/test-matlab-ts-mode-indent-files/indent_cell2_expected_msgs.m
index c092fb7ece..28c097e027 100644
--- a/tests/test-matlab-ts-mode-indent-files/indent_cell2_expected_msgs.m
+++ b/tests/test-matlab-ts-mode-indent-files/indent_cell2_expected_msgs.m
@@ -1,62 +1,62 @@
 % -*- matlab-ts -*- %  <{Matched rule: ((lambda (node parent _bol &rest _) 
(and node (not (string= (treesit-node-type node) "line_continuation")) (equal 
(treesit-node-type parent) "source_file"))) (lambda (_node _parent bol &rest _) 
(save-excursion (goto-char bol) (line-beginning-position))) 0)}>
 
 var_types = { %  <{Matched rule: ((lambda (node parent _bol &rest _) (and node 
(not (string= (treesit-node-type node) "line_continuation")) (equal 
(treesit-node-type parent) "source_file"))) (lambda (_node _parent bol &rest _) 
(save-excursion (goto-char bol) (line-beginning-position))) 0)}>
-              'bool'; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-              'int8'; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-              'uint8'; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-              'int16'; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-              'uint16'; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-              'int32'; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-              'uint32'; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-              'int64'; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-              'uint64'; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-              'int128'; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-              'uint128'; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-              'single'; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-              'double'; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-              'matrix(int32,2)'; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-              'matrix(bool,2)'; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-              'matrix(int32,3)'; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-              'matrix(bool,3)'; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-              'matrix(int32,100)'; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
+              'bool'; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+              'int8'; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+              'uint8'; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+              'int16'; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+              'uint16'; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+              'int32'; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+              'uint32'; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+              'int64'; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+              'uint64'; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+              'int128'; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+              'uint128'; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+              'single'; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+              'double'; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+              'matrix(int32,2)'; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+              'matrix(bool,2)'; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+              'matrix(int32,3)'; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+              'matrix(bool,3)'; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+              'matrix(int32,100)'; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
             }; %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 0)}>
 
 typesToVerify = { %  <{Matched rule: ((lambda (node parent _bol &rest _) (and 
node (not (string= (treesit-node-type node) "line_continuation")) (equal 
(treesit-node-type parent) "source_file"))) (lambda (_node _parent bol &rest _) 
(save-excursion (goto-char bol) (line-beginning-position))) 0)}>
-                  % numeric, logical, and char scalars %  <{Matched rule: 
((parent-is "\\`\\(?:cell\\|matrix\\)\\'") parent 
matlab-ts-mode--row-indent-level)}>
-                  logical(1), %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-                  int8(2), %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-                  int16(3), %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-                  double(2+2j), %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
+                  % numeric, logical, and char scalars %  <{Matched rule: 
((parent-is "\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+                  logical(1), %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+                  int8(2), %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+                  int16(3), %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+                  double(2+2j), %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
                   'c', %  <{Matched rule: ((parent-is 
"\\`\\(?:function_output\\|row\\)\\'") parent 0)}>
 
-                  % numeric, logical, and char matrix %  <{Matched rule: 
((parent-is "\\`\\(?:cell\\|matrix\\)\\'") parent 
matlab-ts-mode--row-indent-level)}>
-                  logical(ones(3,3,3)), %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-                  int8(ones(3,3,3)), %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-                  uint8(ones(3,3,3)), %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-                  double(ones(3,3,3)+2j), %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
+                  % numeric, logical, and char matrix %  <{Matched rule: 
((parent-is "\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+                  logical(ones(3,3,3)), %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+                  int8(ones(3,3,3)), %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+                  uint8(ones(3,3,3)), %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+                  double(ones(3,3,3)+2j), %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
 
                   % char row vector. %  <{Matched rule: ((parent-is 
"\\`\\(?:function_output\\|row\\)\\'") parent 0)}>
                   'char', %  <{Matched rule: ((parent-is 
"\\`\\(?:function_output\\|row\\)\\'") parent 0)}>
 
-                  % cell array %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-                  { 'c', 'e', 'l', 'l' }, %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
+                  % cell array %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+                  { 'c', 'e', 'l', 'l' }, %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
 
-                  % function handle %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-                  @() disp('function handle'), %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
+                  % function handle %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+                  @() disp('function handle'), %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
 
-                  % String %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-                  string(missing), %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
+                  % String %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+                  string(missing), %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
                   "my scalar string", %  <{Matched rule: ((parent-is 
"\\`\\(?:function_output\\|row\\)\\'") parent 0)}>
-                  strings(1,2), %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
+                  strings(1,2), %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
 
-                  % comment here %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-                  dictionary("a","b"), %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-                  dictionary(0,1), %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-                  dictionary %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
+                  % comment here %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+                  dictionary("a","b"), %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+                  dictionary(0,1), %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+                  dictionary %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
                 }; %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 0)}>
 
 supportedRhsArgs = ... %  <{Matched rule: ((lambda (node parent _bol &rest _) 
(and node (not (string= (treesit-node-type node) "line_continuation")) (equal 
(treesit-node-type parent) "source_file"))) (lambda (_node _parent bol &rest _) 
(save-excursion (goto-char bol) (line-beginning-position))) 0)}>
     { ... %  <{Matched rule: ((parent-is "\\`assignment\\'") parent 4)}>
-      struct('foo', 1), ... %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
+      struct('foo', 1), ... %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
       1, ... %  <{Matched rule: ((parent-is 
"\\`\\(?:function_output\\|row\\)\\'") parent 0)}>
     }; %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 0)}>
diff --git a/tests/test-matlab-ts-mode-indent-files/indent_cell_expected_msgs.m 
b/tests/test-matlab-ts-mode-indent-files/indent_cell_expected_msgs.m
index 928fbc4153..2159380f29 100644
--- a/tests/test-matlab-ts-mode-indent-files/indent_cell_expected_msgs.m
+++ b/tests/test-matlab-ts-mode-indent-files/indent_cell_expected_msgs.m
@@ -1,7 +1,7 @@
 % -*- matlab-ts -*- %  <{Matched rule: ((lambda (node parent _bol &rest _) 
(and node (not (string= (treesit-node-type node) "line_continuation")) (equal 
(treesit-node-type parent) "source_file"))) (lambda (_node _parent bol &rest _) 
(save-excursion (goto-char bol) (line-beginning-position))) 0)}>
 function [a1, a2, a3, a4, long_variable_a] = indent_cell %  <{Matched rule: 
((lambda (node parent _bol &rest _) (and node (not (string= (treesit-node-type 
node) "line_continuation")) (equal (treesit-node-type parent) "source_file"))) 
(lambda (_node _parent bol &rest _) (save-excursion (goto-char bol) 
(line-beginning-position))) 0)}>
     a1 = { ... %  <{Matched rule: ((parent-is "\\`function_definition\\'") 
parent matlab-ts-mode--set-function-indent-level-for-gp)}>
-           1 ... %  <{Matched rule: ((parent-is "\\`\\(?:cell\\|matrix\\)\\'") 
parent matlab-ts-mode--row-indent-level)}>
+           1 ... %  <{Matched rule: ((parent-is "\\`\\(?:cell\\|matrix\\)\\'") 
parent 2)}>
            + ... %  <{Matched rule: ((parent-is 
"\\`\\(?:function_output\\|row\\)\\'") parent 0)}>
            2 %  <{Matched rule: (matlab-ts-mode--i-cont-matcher parent 
matlab-ts-mode--i-cont-offset)}>
          }; %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 0)}>
@@ -12,23 +12,23 @@ function [a1, a2, a3, a4, long_variable_a] = indent_cell %  
<{Matched rule: ((la
          }; %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 0)}>
 
     a3 = { ... %  <{Matched rule: ((parent-is "\\`block\\'") parent 0)}>
-           2,  { 3 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-                 4 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-                 5 + ( ... %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
+           2,  { 3 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+                 4 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+                 5 + ( ... %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
                       2 + 0 ... %  <{Matched rule: ((parent-is 
"\\`parenthesis\\'") parent 1)}>
                      ) %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 0)}>
                } %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 0)}>
          }; %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 0)}>
 
     a4 = { ... %  <{Matched rule: ((parent-is "\\`block\\'") parent 0)}>
-           1; ... %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-           2 ... %  <{Matched rule: ((parent-is "\\`\\(?:cell\\|matrix\\)\\'") 
parent matlab-ts-mode--row-indent-level)}>
+           1; ... %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+           2 ... %  <{Matched rule: ((parent-is "\\`\\(?:cell\\|matrix\\)\\'") 
parent 2)}>
          }; %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 0)}>
 
     long_variable_a = ... %  <{Matched rule: ((parent-is "\\`block\\'") parent 
0)}>
         { %  <{Matched rule: ((parent-is "\\`assignment\\'") parent 4)}>
-          2, 123, 456 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-          3,   2    7 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
+          2, 123, 456 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+          3,   2    7 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
         }; %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 0)}>
 
 end %  <{Matched rule: ((node-is 
"\\`\\(?:catch_clause\\|e\\(?:lse\\(?:\\(?:if\\)?_clause\\)\\|nd\\)\\)\\'") 
parent 0)}>
diff --git 
a/tests/test-matlab-ts-mode-indent-files/indent_class_prop_continued2_expected_msgs.m
 
b/tests/test-matlab-ts-mode-indent-files/indent_class_prop_continued2_expected_msgs.m
index 2817246f52..863be6b2e7 100644
--- 
a/tests/test-matlab-ts-mode-indent-files/indent_class_prop_continued2_expected_msgs.m
+++ 
b/tests/test-matlab-ts-mode-indent-files/indent_class_prop_continued2_expected_msgs.m
@@ -6,25 +6,25 @@ classdef indent_class_prop_continued2 %  <{Matched rule: 
((lambda (node parent _
 
     properties (Constant) %  <{Matched rule: ((node-is 
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
 parent 4)}>
         property1 = containers.Map(... %  <{Matched rule: ((node-is 
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
 parent 4)}>
-            { %  <{Matched rule: (matlab-ts--i-arg-namespace-fcn-prop-matcher 
matlab-ts--i-arg-namespace-fcn-prop-anchor 4)}>
-              'one' %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-              'two' %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
+            { %  <{Matched rule: 
(matlab-ts-mode--i-arg-namespace-fcn-prop-matcher 
matlab-ts-mode--i-arg-namespace-fcn-prop-anchor 4)}>
+              'one' %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+              'two' %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
             } ... %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 0)}>
             , ... %  <{Matched rule: ((parent-is "\\`arguments\\'") parent 0)}>
             { %  <{Matched rule: ((parent-is "\\`arguments\\'") parent 0)}>
-              'foo' %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-              'bar' %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
+              'foo' %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+              'bar' %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
             }); %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 0)}>
 
         property2 = someFcn(... %  <{Matched rule: ((node-is 
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
 parent 4)}>
             { %  <{Matched rule: ((n-p-gp 
"\\`\\(?:)\\|arguments\\|line_continuation\\)\\'" "\\`function_call\\'" 
"\\`default_value\\'") great-grand-parent 4)}>
-              'one' %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-              'two' %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
+              'one' %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+              'two' %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
             } ... %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 0)}>
             , ... %  <{Matched rule: ((parent-is "\\`arguments\\'") parent 0)}>
             { %  <{Matched rule: ((parent-is "\\`arguments\\'") parent 0)}>
-              'foo' %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-              'bar' %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
+              'foo' %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+              'bar' %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
             }); %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 0)}>
     end %  <{Matched rule: ((node-is 
"\\`\\(?:catch_clause\\|e\\(?:lse\\(?:\\(?:if\\)?_clause\\)\\|nd\\)\\)\\'") 
parent 0)}>
 end %  <{Matched rule: ((node-is 
"\\`\\(?:catch_clause\\|e\\(?:lse\\(?:\\(?:if\\)?_clause\\)\\|nd\\)\\)\\'") 
parent 0)}>
diff --git 
a/tests/test-matlab-ts-mode-indent-files/indent_cont_cell_issue75_expected_msgs.m
 
b/tests/test-matlab-ts-mode-indent-files/indent_cont_cell_issue75_expected_msgs.m
index 79a9a44784..c5bd9ccafa 100644
--- 
a/tests/test-matlab-ts-mode-indent-files/indent_cont_cell_issue75_expected_msgs.m
+++ 
b/tests/test-matlab-ts-mode-indent-files/indent_cont_cell_issue75_expected_msgs.m
@@ -3,11 +3,11 @@
 c1 ... %  <{Matched rule: ((lambda (node parent _bol &rest _) (and node (not 
(string= (treesit-node-type node) "line_continuation")) (equal 
(treesit-node-type parent) "source_file"))) (lambda (_node _parent bol &rest _) 
(save-excursion (goto-char bol) (line-beginning-position))) 0)}>
     = ... %  <{Matched rule: ((parent-is "\\`assignment\\'") parent 4)}>
     { ... %  <{Matched rule: ((parent-is "\\`assignment\\'") parent 4)}>
-      'foo', ... %  <{Matched rule: ((parent-is "\\`\\(?:cell\\|matrix\\)\\'") 
parent matlab-ts-mode--row-indent-level)}>
+      'foo', ... %  <{Matched rule: ((parent-is "\\`\\(?:cell\\|matrix\\)\\'") 
parent 2)}>
       'bar' ... %  <{Matched rule: ((parent-is 
"\\`\\(?:function_output\\|row\\)\\'") parent 0)}>
       { ... %  <{Matched rule: ((parent-is 
"\\`\\(?:function_output\\|row\\)\\'") parent 0)}>
-        'a'; ... %  <{Matched rule: ((parent-is "\\`\\(?:cell\\|matrix\\)\\'") 
parent matlab-ts-mode--row-indent-level)}>
-        'b'  ... %  <{Matched rule: ((parent-is "\\`\\(?:cell\\|matrix\\)\\'") 
parent matlab-ts-mode--row-indent-level)}>
+        'a'; ... %  <{Matched rule: ((parent-is "\\`\\(?:cell\\|matrix\\)\\'") 
parent 2)}>
+        'b'  ... %  <{Matched rule: ((parent-is "\\`\\(?:cell\\|matrix\\)\\'") 
parent 2)}>
       }   ... %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 0)}>
       ''  ... %  <{Matched rule: ((parent-is 
"\\`\\(?:function_output\\|row\\)\\'") parent 0)}>
     } %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 0)}>
diff --git 
a/tests/test-matlab-ts-mode-indent-files/indent_cont_properties_expected_msgs.m 
b/tests/test-matlab-ts-mode-indent-files/indent_cont_properties_expected_msgs.m
index 2f352b5b3d..d26b2ed167 100644
--- 
a/tests/test-matlab-ts-mode-indent-files/indent_cont_properties_expected_msgs.m
+++ 
b/tests/test-matlab-ts-mode-indent-files/indent_cont_properties_expected_msgs.m
@@ -4,8 +4,8 @@ classdef indent_cont_properties %  <{Matched rule: ((lambda 
(node parent _bol &r
 
     properties %  <{Matched rule: ((node-is 
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
 parent 4)}>
         p1 = { %  <{Matched rule: ((node-is 
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
 parent 4)}>
-               1 2; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-               3 4 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
+               1 2; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+               3 4 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
              } %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 0)}>
     end %  <{Matched rule: ((node-is 
"\\`\\(?:catch_clause\\|e\\(?:lse\\(?:\\(?:if\\)?_clause\\)\\|nd\\)\\)\\'") 
parent 0)}>
 
diff --git 
a/tests/test-matlab-ts-mode-indent-files/indent_failure_with_indent_region.skip.txt
 
b/tests/test-matlab-ts-mode-indent-files/indent_failure_with_indent_region_expected.m
similarity index 60%
rename from 
tests/test-matlab-ts-mode-indent-files/indent_failure_with_indent_region.skip.txt
rename to 
tests/test-matlab-ts-mode-indent-files/indent_failure_with_indent_region_expected.m
index 7c398188c4..82cc9c0825 100644
--- 
a/tests/test-matlab-ts-mode-indent-files/indent_failure_with_indent_region.skip.txt
+++ 
b/tests/test-matlab-ts-mode-indent-files/indent_failure_with_indent_region_expected.m
@@ -1,11 +1,10 @@
-M-x indent-region fails and produces:
 % -*- matlab-ts -*-
 function indent_failure_with_indent_region
     var_types = {
                   'bool';
-        'int8';
-        'int8';
-        'int8'
+                  'int8';
+                  'int8';
+                  'int8'
                 };
 
 end
diff --git 
a/tests/test-matlab-ts-mode-indent-files/indent_failure_with_indent_region_expected_msgs.m
 
b/tests/test-matlab-ts-mode-indent-files/indent_failure_with_indent_region_expected_msgs.m
new file mode 100644
index 0000000000..c32aae970e
--- /dev/null
+++ 
b/tests/test-matlab-ts-mode-indent-files/indent_failure_with_indent_region_expected_msgs.m
@@ -0,0 +1,10 @@
+% -*- matlab-ts -*- %  <{Matched rule: ((lambda (node parent _bol &rest _) 
(and node (not (string= (treesit-node-type node) "line_continuation")) (equal 
(treesit-node-type parent) "source_file"))) (lambda (_node _parent bol &rest _) 
(save-excursion (goto-char bol) (line-beginning-position))) 0)}>
+function indent_failure_with_indent_region %  <{Matched rule: ((lambda (node 
parent _bol &rest _) (and node (not (string= (treesit-node-type node) 
"line_continuation")) (equal (treesit-node-type parent) "source_file"))) 
(lambda (_node _parent bol &rest _) (save-excursion (goto-char bol) 
(line-beginning-position))) 0)}>
+    var_types = { %  <{Matched rule: ((parent-is "\\`function_definition\\'") 
parent matlab-ts-mode--set-function-indent-level-for-gp)}>
+                  'bool'; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+                  'int8'; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+                  'int8'; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+                  'int8' %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+                }; %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 0)}>
+
+end %  <{Matched rule: ((node-is 
"\\`\\(?:catch_clause\\|e\\(?:lse\\(?:\\(?:if\\)?_clause\\)\\|nd\\)\\)\\'") 
parent 0)}>
diff --git 
a/tests/test-matlab-ts-mode-indent-files/indent_fcn_ellipsis_expected_msgs.m 
b/tests/test-matlab-ts-mode-indent-files/indent_fcn_ellipsis_expected_msgs.m
index 8e4a5bbaf2..7f8bc34d19 100644
--- a/tests/test-matlab-ts-mode-indent-files/indent_fcn_ellipsis_expected_msgs.m
+++ b/tests/test-matlab-ts-mode-indent-files/indent_fcn_ellipsis_expected_msgs.m
@@ -20,7 +20,7 @@ function ... %  <{Matched rule: ((lambda (node parent _bol 
&rest _) (and node (n
         ); %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 0)}>
 
     b = [ ... %  <{Matched rule: ((parent-is "\\`block\\'") parent 0)}>
-          1 + ... %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
+          1 + ... %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
           2 + ... %  <{Matched rule: ((parent-is "\\`binary_operator\\'") 
parent 0)}>
           3   ... %  <{Matched rule: ((parent-is "\\`binary_operator\\'") 
parent 0)}>
         ]; %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 0)}>
diff --git 
a/tests/test-matlab-ts-mode-indent-files/indent_line_continuation_row_expected_msgs.m
 
b/tests/test-matlab-ts-mode-indent-files/indent_line_continuation_row_expected_msgs.m
index 1d74f8a3c8..fe47bb0521 100644
--- 
a/tests/test-matlab-ts-mode-indent-files/indent_line_continuation_row_expected_msgs.m
+++ 
b/tests/test-matlab-ts-mode-indent-files/indent_line_continuation_row_expected_msgs.m
@@ -1,7 +1,7 @@
 % -*- matlab-ts -*- %  <{Matched rule: ((lambda (node parent _bol &rest _) 
(and node (not (string= (treesit-node-type node) "line_continuation")) (equal 
(treesit-node-type parent) "source_file"))) (lambda (_node _parent bol &rest _) 
(save-excursion (goto-char bol) (line-beginning-position))) 0)}>
 function a = indent_line_continuation_row %  <{Matched rule: ((lambda (node 
parent _bol &rest _) (and node (not (string= (treesit-node-type node) 
"line_continuation")) (equal (treesit-node-type parent) "source_file"))) 
(lambda (_node _parent bol &rest _) (save-excursion (goto-char bol) 
(line-beginning-position))) 0)}>
     a = { ... %  <{Matched rule: ((parent-is "\\`function_definition\\'") 
parent matlab-ts-mode--set-function-indent-level-for-gp)}>
-          1 ... %  <{Matched rule: ((parent-is "\\`\\(?:cell\\|matrix\\)\\'") 
parent matlab-ts-mode--row-indent-level)}>
+          1 ... %  <{Matched rule: ((parent-is "\\`\\(?:cell\\|matrix\\)\\'") 
parent 2)}>
           + ... %  <{Matched rule: ((parent-is 
"\\`\\(?:function_output\\|row\\)\\'") parent 0)}>
           2 ... %  <{Matched rule: (matlab-ts-mode--i-cont-matcher parent 
matlab-ts-mode--i-cont-offset)}>
         }; %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 0)}>
diff --git 
a/tests/test-matlab-ts-mode-indent-files/indent_matrix_expected_msgs.m 
b/tests/test-matlab-ts-mode-indent-files/indent_matrix_expected_msgs.m
index 24738e0c32..d0870bf083 100644
--- a/tests/test-matlab-ts-mode-indent-files/indent_matrix_expected_msgs.m
+++ b/tests/test-matlab-ts-mode-indent-files/indent_matrix_expected_msgs.m
@@ -1,7 +1,7 @@
 % -*- matlab-ts -*- %  <{Matched rule: ((lambda (node parent _bol &rest _) 
(and node (not (string= (treesit-node-type node) "line_continuation")) (equal 
(treesit-node-type parent) "source_file"))) (lambda (_node _parent bol &rest _) 
(save-excursion (goto-char bol) (line-beginning-position))) 0)}>
 function indent_matrix %  <{Matched rule: ((lambda (node parent _bol &rest _) 
(and node (not (string= (treesit-node-type node) "line_continuation")) (equal 
(treesit-node-type parent) "source_file"))) (lambda (_node _parent bol &rest _) 
(save-excursion (goto-char bol) (line-beginning-position))) 0)}>
     a = [ ... %  <{Matched rule: ((parent-is "\\`function_definition\\'") 
parent matlab-ts-mode--set-function-indent-level-for-gp)}>
-          1 ... %  <{Matched rule: ((parent-is "\\`\\(?:cell\\|matrix\\)\\'") 
parent matlab-ts-mode--row-indent-level)}>
+          1 ... %  <{Matched rule: ((parent-is "\\`\\(?:cell\\|matrix\\)\\'") 
parent 2)}>
           + ... %  <{Matched rule: ((parent-is 
"\\`\\(?:function_output\\|row\\)\\'") parent 0)}>
           2 %  <{Matched rule: (matlab-ts-mode--i-cont-matcher parent 
matlab-ts-mode--i-cont-offset)}>
         ]; %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 0)}>
@@ -13,29 +13,29 @@ function indent_matrix %  <{Matched rule: ((lambda (node 
parent _bol &rest _) (a
     disp(a); %  <{Matched rule: ((parent-is "\\`block\\'") parent 0)}>
 
     a = [1, 2; %  <{Matched rule: ((parent-is "\\`block\\'") parent 0)}>
-         3, 4]; %  <{Matched rule: ((parent-is "\\`\\(?:cell\\|matrix\\)\\'") 
parent matlab-ts-mode--row-indent-level)}>
+         3, 4]; %  <{Matched rule: (matlab-ts-mode--i-row-matcher 
matlab-ts-mode--i-row-anchor 0)}>
     disp(a); %  <{Matched rule: ((parent-is "\\`block\\'") parent 0)}>
 
     a = [ ... %  <{Matched rule: ((parent-is "\\`block\\'") parent 0)}>
-          2 + [ 3 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-                4, %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-                5 + [ ... %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-                      2 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
+          2 + [ 3 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+                4, %  <{Matched rule: (matlab-ts-mode--i-row-matcher 
matlab-ts-mode--i-row-anchor 0)}>
+                5 + [ ... %  <{Matched rule: (matlab-ts-mode--i-row-matcher 
matlab-ts-mode--i-row-anchor 0)}>
+                      2 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
                     ] %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 0)}>
               ] %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 0)}>
         ]; %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 0)}>
     disp(a); %  <{Matched rule: ((parent-is "\\`block\\'") parent 0)}>
 
     a = [ ... %  <{Matched rule: ((parent-is "\\`block\\'") parent 0)}>
-          1; ... %  <{Matched rule: ((parent-is "\\`\\(?:cell\\|matrix\\)\\'") 
parent matlab-ts-mode--row-indent-level)}>
-          2 ... %  <{Matched rule: ((parent-is "\\`\\(?:cell\\|matrix\\)\\'") 
parent matlab-ts-mode--row-indent-level)}>
+          1; ... %  <{Matched rule: ((parent-is "\\`\\(?:cell\\|matrix\\)\\'") 
parent 2)}>
+          2 ... %  <{Matched rule: ((parent-is "\\`\\(?:cell\\|matrix\\)\\'") 
parent 2)}>
         ]; %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 0)}>
     disp(a); %  <{Matched rule: ((parent-is "\\`block\\'") parent 0)}>
 
     long_variable_a = ... %  <{Matched rule: ((parent-is "\\`block\\'") parent 
0)}>
         [ %  <{Matched rule: ((parent-is "\\`assignment\\'") parent 4)}>
-          2, 123, 456 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-          3,   2    7 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
+          2, 123, 456 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+          3,   2    7 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
         ]; %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 0)}>
     disp(long_variable_a); %  <{Matched rule: ((parent-is "\\`block\\'") 
parent 0)}>
 
diff --git 
a/tests/test-matlab-ts-mode-indent-files/indent_matrix_issue44_expected_msgs.m 
b/tests/test-matlab-ts-mode-indent-files/indent_matrix_issue44_expected_msgs.m
index 696575fb71..97e8befe84 100644
--- 
a/tests/test-matlab-ts-mode-indent-files/indent_matrix_issue44_expected_msgs.m
+++ 
b/tests/test-matlab-ts-mode-indent-files/indent_matrix_issue44_expected_msgs.m
@@ -4,6 +4,6 @@
 
 foo = 1:2; %  <{Matched rule: ((lambda (node parent _bol &rest _) (and node 
(not (string= (treesit-node-type node) "line_continuation")) (equal 
(treesit-node-type parent) "source_file"))) (lambda (_node _parent bol &rest _) 
(save-excursion (goto-char bol) (line-beginning-position))) 0)}>
 bar = [ %  <{Matched rule: ((lambda (node parent _bol &rest _) (and node (not 
(string= (treesit-node-type node) "line_continuation")) (equal 
(treesit-node-type parent) "source_file"))) (lambda (_node _parent bol &rest _) 
(save-excursion (goto-char bol) (line-beginning-position))) 0)}>
-        foo(1), ... %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
+        foo(1), ... %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
         2 %  <{Matched rule: ((parent-is 
"\\`\\(?:function_output\\|row\\)\\'") parent 0)}>
       ] %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 0)}>
diff --git 
a/tests/test-matlab-ts-mode-indent-files/indent_old_indents_expected_msgs.m 
b/tests/test-matlab-ts-mode-indent-files/indent_old_indents_expected_msgs.m
index f1436f1b3b..90a81e8a6a 100644
--- a/tests/test-matlab-ts-mode-indent-files/indent_old_indents_expected_msgs.m
+++ b/tests/test-matlab-ts-mode-indent-files/indent_old_indents_expected_msgs.m
@@ -133,46 +133,46 @@ function out = array_constant_decls() %  <{Matched rule: 
((lambda (node parent _
     A = [ 1 2 3 ]; %!!4 %  <{Matched rule: ((parent-is 
"\\`function_definition\\'") parent 
matlab-ts-mode--set-function-indent-level-for-gp)}>
 
     Blong = [ 1 2; %!!4 %  <{Matched rule: ((parent-is "\\`block\\'") parent 
0)}>
-              3 4; %!!14 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
+              3 4; %!!14 %  <{Matched rule: (matlab-ts-mode--i-row-matcher 
matlab-ts-mode--i-row-anchor 0)}>
             ]; %!!12 %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 0)}>
 
     Csep = [ %  <{Matched rule: ((parent-is "\\`block\\'") parent 0)}>
-             1 2; %!!8 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-             3 4; %!!8 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
+             1 2; %!!8 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+             3 4; %!!8 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
            ]; %!!11 %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 0)}>
 
     multinest = { [ 1 2               %!!4 %  <{Matched rule: ((parent-is 
"\\`block\\'") parent 0)}>
-                    3 4 ];            %!!20 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-                  { 5 6 7 ...         %!!18 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
+                    3 4 ];            %!!20 %  <{Matched rule: 
(matlab-ts-mode--i-row-matcher matlab-ts-mode--i-row-anchor 0)}>
+                  { 5 6 7 ...         %!!18 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
                     8 9 10 ...        %!!20 %  <{Matched rule: ((parent-is 
"\\`\\(?:function_output\\|row\\)\\'") parent 0)}>
                   };                  %!!18 %  <{Matched rule: ((node-is 
"\\`[])}]\\'") parent 0)}>
-                  fcncall(10, ...     %!!18 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
+                  fcncall(10, ...     %!!18 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
                           12, ...     %!!26 %  <{Matched rule: ((parent-is 
"\\`arguments\\'") parent 0)}>
                           [ 13 14;    %!!26 %  <{Matched rule: ((parent-is 
"\\`arguments\\'") parent 0)}>
-                            15 16 ])  %!!28 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
+                            15 16 ])  %!!28 %  <{Matched rule: 
(matlab-ts-mode--i-row-matcher matlab-ts-mode--i-row-anchor 0)}>
                 } ;  %!!16 %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 
0)}>
 
     nest = { ... %!!4 %  <{Matched rule: ((parent-is "\\`block\\'") parent 0)}>
-             1        %!!8 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-             [ ...    %!!8 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-               2 3    %!!10 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
+             1        %!!8 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+             [ ...    %!!8 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+               2 3    %!!10 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
              ] ...    %!!8 %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 
0)}>
              3        %!!8 %  <{Matched rule: ((parent-is 
"\\`\\(?:function_output\\|row\\)\\'") parent 0)}>
            };    %!!11 %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 0)}>
 
     cascade_long_name = ... %!!4 %  <{Matched rule: ((parent-is "\\`block\\'") 
parent 0)}>
         { ...               %!!8 %  <{Matched rule: ((parent-is 
"\\`assignment\\'") parent 4)}>
-          1                 %!!10 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-          2                 %!!10 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
+          1                 %!!10 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+          2                 %!!10 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
         };                  %!!8 %  <{Matched rule: ((node-is "\\`[])}]\\'") 
parent 0)}>
 
     % TODO %  <{Matched rule: ((parent-is "\\`block\\'") parent 0)}>
     % I don't know why the below indents this way. %  <{Matched rule: 
(matlab-ts-mode--i-block-comment-end-matcher parent 0)}>
     % It should either do all max indent, or all lined up with parens. %  
<{Matched rule: (matlab-ts-mode--i-block-comment-end-matcher parent 0)}>
     thing.thing.long.long.longname({ 'str' %!!4 %  <{Matched rule: ((parent-is 
"\\`block\\'") parent 0)}>
-                                     'str' %!!37 %  <{Matched rule: 
((parent-is "\\`\\(?:cell\\|matrix\\)\\'") parent 
matlab-ts-mode--row-indent-level)}>
-                                     'str' %!!37 %  <{Matched rule: 
((parent-is "\\`\\(?:cell\\|matrix\\)\\'") parent 
matlab-ts-mode--row-indent-level)}>
-                                     'str' %!!37 %  <{Matched rule: 
((parent-is "\\`\\(?:cell\\|matrix\\)\\'") parent 
matlab-ts-mode--row-indent-level)}>
+                                     'str' %!!37 %  <{Matched rule: 
((parent-is "\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+                                     'str' %!!37 %  <{Matched rule: 
((parent-is "\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+                                     'str' %!!37 %  <{Matched rule: 
((parent-is "\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
                                    });   %!!35 %  <{Matched rule: ((node-is 
"\\`[])}]\\'") parent 0)}>
 
     thing.thing.long.long.longname('str', ... %!!4 %  <{Matched rule: 
((parent-is "\\`block\\'") parent 0)}>
@@ -188,12 +188,12 @@ function out = array_constant_decls() %  <{Matched rule: 
((lambda (node parent _
     % This array has bad syntactic expression parsing due to the %  <{Matched 
rule: ((parent-is "\\`block\\'") parent 0)}>
     % apostrophy %  <{Matched rule: 
(matlab-ts-mode--i-block-comment-end-matcher parent 0)}>
     Closures = [ %  <{Matched rule: ((parent-is "\\`block\\'") parent 0)}>
-                 755009 ; ... % 21-Feb-2067 Washington's Birthday (Mon) %  
<{Matched rule: ((parent-is "\\`\\(?:cell\\|matrix\\)\\'") parent 
matlab-ts-mode--row-indent-level)}>
-                 755010 ;     % !!8 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
+                 755009 ; ... % 21-Feb-2067 Washington's Birthday (Mon) %  
<{Matched rule: ((parent-is "\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+                 755010 ;     % !!8 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
                ]; %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 0)}>
 
     dep = [ %  <{Matched rule: ((parent-is "\\`block\\'") parent 0)}>
-            root(info.function, factory, workspace, []), ...    % likewise 
this isn't a keyword %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
+            root(info.function, factory, workspace, []), ...    % likewise 
this isn't a keyword %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
             fcn3.finalize                                       % the single 
quote used to break [] scanning %  <{Matched rule: ((parent-is 
"\\`\\(?:function_output\\|row\\)\\'") parent 0)}>
           ]; %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 0)}>
 
@@ -209,13 +209,13 @@ function out = array_constant_decls() %  <{Matched rule: 
((lambda (node parent _
 
     % !!4 %  <{Matched rule: ((parent-is "\\`block\\'") parent 0)}>
     out = { A     %!!4 %  <{Matched rule: ((parent-is "\\`block\\'") parent 
0)}>
-            Blong %!!12 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-            Csep  %!!12 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-            nest  %!!12 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-            multinest%!!12 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-            cascade_long_name%!!12 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-            Closures%!!12 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-            dep %!!12 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
+            Blong %!!12 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+            Csep  %!!12 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+            nest  %!!12 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+            multinest%!!12 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+            cascade_long_name%!!12 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+            Closures%!!12 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+            dep %!!12 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
           };      %!!10 %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 0)}>
 
 end %  <{Matched rule: ((node-is 
"\\`\\(?:catch_clause\\|e\\(?:lse\\(?:\\(?:if\\)?_clause\\)\\|nd\\)\\)\\'") 
parent 0)}>
@@ -302,7 +302,7 @@ function B = continuations_and_block_comments %  <{Matched 
rule: ((lambda (node
                  arg2); %!!17 %  <{Matched rule: ((parent-is 
"\\`arguments\\'") parent 0)}>
 
     A = [ 1 2  % !!4 %  <{Matched rule: ((parent-is "\\`block\\'") parent 0)}>
-          3 4 ]; % !!10 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
+          3 4 ]; % !!10 %  <{Matched rule: (matlab-ts-mode--i-row-matcher 
matlab-ts-mode--i-row-anchor 0)}>
 
     foo(['this is a very long string', ... %!!4 %  <{Matched rule: ((parent-is 
"\\`block\\'") parent 0)}>
          'with a continution to do something very exciting']);%!!9 %  
<{Matched rule: ((parent-is "\\`\\(?:function_output\\|row\\)\\'") parent 0)}>
diff --git 
a/tests/test-matlab-ts-mode-indent-files/indent_old_indents_for_typing_expected_msgs.m
 
b/tests/test-matlab-ts-mode-indent-files/indent_old_indents_for_typing_expected_msgs.m
index 96ec30435e..d9f0ff5b12 100644
--- 
a/tests/test-matlab-ts-mode-indent-files/indent_old_indents_for_typing_expected_msgs.m
+++ 
b/tests/test-matlab-ts-mode-indent-files/indent_old_indents_for_typing_expected_msgs.m
@@ -135,46 +135,46 @@ function out = array_constant_decls() %  <{Matched rule: 
((lambda (node parent _
     A = [ 1 2 3 ]; %!!4 %  <{Matched rule: ((parent-is 
"\\`function_definition\\'") parent 
matlab-ts-mode--set-function-indent-level-for-gp)}>
 
     Blong = [ 1 2; %!!4 %  <{Matched rule: ((parent-is "\\`block\\'") parent 
0)}>
-              3 4; %!!14 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
+              3 4; %!!14 %  <{Matched rule: (matlab-ts-mode--i-row-matcher 
matlab-ts-mode--i-row-anchor 0)}>
             ]; %!!12 %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 0)}>
 
     Csep = [ %  <{Matched rule: ((parent-is "\\`block\\'") parent 0)}>
-             1 2; %!!8 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-             3 4; %!!8 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
+             1 2; %!!8 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+             3 4; %!!8 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
            ]; %!!11 %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 0)}>
 
     multinest = { [ 1 2               %!!4 %  <{Matched rule: ((parent-is 
"\\`block\\'") parent 0)}>
-                    3 4 ];            %!!20 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-                  { 5 6 7 ...         %!!18 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
+                    3 4 ];            %!!20 %  <{Matched rule: 
(matlab-ts-mode--i-row-matcher matlab-ts-mode--i-row-anchor 0)}>
+                  { 5 6 7 ...         %!!18 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
                     8 9 10 ...        %!!20 %  <{Matched rule: ((parent-is 
"\\`\\(?:function_output\\|row\\)\\'") parent 0)}>
                   };                  %!!18 %  <{Matched rule: ((node-is 
"\\`[])}]\\'") parent 0)}>
-                  fcncall(10, ...     %!!18 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
+                  fcncall(10, ...     %!!18 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
                           12, ...     %!!26 %  <{Matched rule: ((parent-is 
"\\`arguments\\'") parent 0)}>
                           [ 13 14;    %!!26 %  <{Matched rule: ((parent-is 
"\\`arguments\\'") parent 0)}>
-                            15 16 ])  %!!28 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
+                            15 16 ])  %!!28 %  <{Matched rule: 
(matlab-ts-mode--i-row-matcher matlab-ts-mode--i-row-anchor 0)}>
                 } ;  %!!16 %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 
0)}>
 
     nest = { ... %!!4 %  <{Matched rule: ((parent-is "\\`block\\'") parent 0)}>
-             1        %!!8 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-             [ ...    %!!8 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-               2 3    %!!10 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
+             1        %!!8 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+             [ ...    %!!8 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+               2 3    %!!10 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
              ] ...    %!!8 %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 
0)}>
              3        %!!8 %  <{Matched rule: ((parent-is 
"\\`\\(?:function_output\\|row\\)\\'") parent 0)}>
            };    %!!11 %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 0)}>
 
     cascade_long_name = ... %!!4 %  <{Matched rule: ((parent-is "\\`block\\'") 
parent 0)}>
         { ...               %!!8 %  <{Matched rule: ((parent-is 
"\\`assignment\\'") parent 4)}>
-          1                 %!!10 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-          2                 %!!10 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
+          1                 %!!10 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+          2                 %!!10 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
         };                  %!!8 %  <{Matched rule: ((node-is "\\`[])}]\\'") 
parent 0)}>
 
     % TODO %  <{Matched rule: ((parent-is "\\`block\\'") parent 0)}>
     % I don't know why the below indents this way. %  <{Matched rule: 
(matlab-ts-mode--i-block-comment-end-matcher parent 0)}>
     % It should either do all max indent, or all lined up with parens. %  
<{Matched rule: (matlab-ts-mode--i-block-comment-end-matcher parent 0)}>
     thing.thing.long.long.longname({ 'str' %!!4 %  <{Matched rule: ((parent-is 
"\\`block\\'") parent 0)}>
-                                     'str' %!!37 %  <{Matched rule: 
((parent-is "\\`\\(?:cell\\|matrix\\)\\'") parent 
matlab-ts-mode--row-indent-level)}>
-                                     'str' %!!37 %  <{Matched rule: 
((parent-is "\\`\\(?:cell\\|matrix\\)\\'") parent 
matlab-ts-mode--row-indent-level)}>
-                                     'str' %!!37 %  <{Matched rule: 
((parent-is "\\`\\(?:cell\\|matrix\\)\\'") parent 
matlab-ts-mode--row-indent-level)}>
+                                     'str' %!!37 %  <{Matched rule: 
((parent-is "\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+                                     'str' %!!37 %  <{Matched rule: 
((parent-is "\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+                                     'str' %!!37 %  <{Matched rule: 
((parent-is "\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
                                    });   %!!35 %  <{Matched rule: ((node-is 
"\\`[])}]\\'") parent 0)}>
 
     thing.thing.long.long.longname('str', ... %!!4 %  <{Matched rule: 
((parent-is "\\`block\\'") parent 0)}>
@@ -190,12 +190,12 @@ function out = array_constant_decls() %  <{Matched rule: 
((lambda (node parent _
     % This array has bad syntactic expression parsing due to the %  <{Matched 
rule: ((parent-is "\\`block\\'") parent 0)}>
     % apostrophy %  <{Matched rule: 
(matlab-ts-mode--i-block-comment-end-matcher parent 0)}>
     Closures = [ %  <{Matched rule: ((parent-is "\\`block\\'") parent 0)}>
-                 755009 ; ... % 21-Feb-2067 Washington's Birthday (Mon) %  
<{Matched rule: ((parent-is "\\`\\(?:cell\\|matrix\\)\\'") parent 
matlab-ts-mode--row-indent-level)}>
-                 755010 ;     % !!8 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
+                 755009 ; ... % 21-Feb-2067 Washington's Birthday (Mon) %  
<{Matched rule: ((parent-is "\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+                 755010 ;     % !!8 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
                ]; %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 0)}>
 
     dep = [ %  <{Matched rule: ((parent-is "\\`block\\'") parent 0)}>
-            root(info.function, factory, workspace, []), ...    % likewise 
this isn't a keyword %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
+            root(info.function, factory, workspace, []), ...    % likewise 
this isn't a keyword %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
             fcn3.finalize                                       % the single 
quote used to break [] scanning %  <{Matched rule: ((parent-is 
"\\`\\(?:function_output\\|row\\)\\'") parent 0)}>
           ]; %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 0)}>
 
@@ -211,13 +211,13 @@ function out = array_constant_decls() %  <{Matched rule: 
((lambda (node parent _
 
     % !!4 %  <{Matched rule: ((parent-is "\\`block\\'") parent 0)}>
     out = { A     %!!4 %  <{Matched rule: ((parent-is "\\`block\\'") parent 
0)}>
-            Blong %!!12 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-            Csep  %!!12 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-            nest  %!!12 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-            multinest%!!12 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-            cascade_long_name%!!12 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-            Closures%!!12 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-            dep %!!12 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
+            Blong %!!12 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+            Csep  %!!12 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+            nest  %!!12 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+            multinest%!!12 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+            cascade_long_name%!!12 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+            Closures%!!12 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+            dep %!!12 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
           };      %!!10 %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 0)}>
 
 end %  <{Matched rule: ((node-is 
"\\`\\(?:catch_clause\\|e\\(?:lse\\(?:\\(?:if\\)?_clause\\)\\|nd\\)\\)\\'") 
parent 0)}>
@@ -289,7 +289,7 @@ function B = continuations_and_block_comments %  <{Matched 
rule: ((lambda (node
                  arg2); %!!17 %  <{Matched rule: ((parent-is 
"\\`arguments\\'") parent 0)}>
 
     A = [ 1 2  % !!4 %  <{Matched rule: ((parent-is "\\`block\\'") parent 0)}>
-          3 4 ]; % !!10 %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
+          3 4 ]; % !!10 %  <{Matched rule: (matlab-ts-mode--i-row-matcher 
matlab-ts-mode--i-row-anchor 0)}>
 
     foo(['this is a very long string', ... %!!4 %  <{Matched rule: ((parent-is 
"\\`block\\'") parent 0)}>
          'with a continution to do something very exciting']);%!!9 %  
<{Matched rule: ((parent-is "\\`\\(?:function_output\\|row\\)\\'") parent 0)}>
diff --git 
a/tests/test-matlab-ts-mode-indent-files/indent_ranges_expected_msgs.m 
b/tests/test-matlab-ts-mode-indent-files/indent_ranges_expected_msgs.m
index ecf5be1831..f33f539eec 100644
--- a/tests/test-matlab-ts-mode-indent-files/indent_ranges_expected_msgs.m
+++ b/tests/test-matlab-ts-mode-indent-files/indent_ranges_expected_msgs.m
@@ -1,8 +1,8 @@
 % -*- matlab-ts -*- %  <{Matched rule: ((lambda (node parent _bol &rest _) 
(and node (not (string= (treesit-node-type node) "line_continuation")) (equal 
(treesit-node-type parent) "source_file"))) (lambda (_node _parent bol &rest _) 
(save-excursion (goto-char bol) (line-beginning-position))) 0)}>
 
 myMatrix = [ %  <{Matched rule: ((lambda (node parent _bol &rest _) (and node 
(not (string= (treesit-node-type node) "line_continuation")) (equal 
(treesit-node-type parent) "source_file"))) (lambda (_node _parent bol &rest _) 
(save-excursion (goto-char bol) (line-beginning-position))) 0)}>
-             1 2; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
-             3 4; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent matlab-ts-mode--row-indent-level)}>
+             1 2; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
+             3 4; %  <{Matched rule: ((parent-is 
"\\`\\(?:cell\\|matrix\\)\\'") parent 2)}>
            ]; %  <{Matched rule: ((node-is "\\`[])}]\\'") parent 0)}>
 
 disp(myMatrix(1:  ... %  <{Matched rule: ((lambda (node parent _bol &rest _) 
(and node (not (string= (treesit-node-type node) "line_continuation")) (equal 
(treesit-node-type parent) "source_file"))) (lambda (_node _parent bol &rest _) 
(save-excursion (goto-char bol) (line-beginning-position))) 0)}>

Reply via email to