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

    matlab-ts-mode: improve electric indent by caching treesit queries
---
 matlab-ts-mode--ei.el                              |  86 ++-
 .../electric_indent_labmda.m                       |   4 +
 .../electric_indent_labmda_expected.m              |   4 +
 .../electric_indent_labmda_expected_msgs.m         |   4 +
 .../electric_indent_matrix.m                       |   3 +
 .../electric_indent_matrix_expected.m              |   3 +
 .../electric_indent_matrix_expected_msgs.m         |   3 +
 .../electric_indent_range.m                        |   3 +
 .../electric_indent_range_expected.m               |   3 +
 .../electric_indent_range_expected_msgs.m          |   3 +
 .../electric_indent_labmda.m                       |   4 +
 .../electric_indent_labmda_expected.txt            | 110 ++--
 .../electric_indent_matrix.m                       |   3 +
 .../electric_indent_matrix_expected.txt            | 642 ++++++++++-----------
 .../electric_indent_range.m                        |   3 +
 .../electric_indent_range_expected.txt             |  62 +-
 16 files changed, 505 insertions(+), 435 deletions(-)

diff --git a/matlab-ts-mode--ei.el b/matlab-ts-mode--ei.el
index a667be69c5..62fce38b34 100644
--- a/matlab-ts-mode--ei.el
+++ b/matlab-ts-mode--ei.el
@@ -217,6 +217,13 @@
     ;; Case: c3 = {{[17.50 0] [17.50 0]} {[120 0] [120 20]}};
     ;;                                 ^ ^
     (,(rx bos (or ")" "}") eos)       "."                                      
                  1)
+
+    ;; We shouldn't hit the ERROR node because 
matlab-ts-mode--ei-no-elements-to-indent
+    ;; says to skip lines with ERROR nodes, but be safe in case an ERROR node 
spans
+    ;; multiple lines without inner ERROR nodes.
+    ;; TODO - double check this logic. Try creating a case that hits this by 
removing this line.
+    (,(rx bos "ERROR" eos)            "."                                      
                  1)
+
     ))
 
 (defun matlab-ts-mode--ei-fast-back-to-indentation ()
@@ -372,6 +379,27 @@ N-SPACES-TO-APPEND is the number of spaces to append 
between nodes."
               (when (> n-spaces-to-append 0)
                 (make-string n-spaces-to-append ? ))))))
 
+(defvar matlab-ts-mode--ei-error-query (treesit-query-compile 'matlab 
'((ERROR) @e)))
+(defvar-local matlab-ts-mode--ei-errors-alist nil)
+
+(defun matlab-ts-mode--ei-get-errors-alist ()
+  "Return an alist of `(ERROR-LINENUM . t) elements.
+If an error node spans multiple lines, we ignore it assuming
+there's an inner error node.  This always returns non-nil, thus
+enabling caching."
+  (let ((capture-errors (treesit-query-capture (treesit-buffer-root-node)
+                                               matlab-ts-mode--ei-error-query))
+        (error-linenums `(-1 . nil)))
+    (dolist (capture-error capture-errors)
+      (let* ((error-node (cdr capture-error))
+             (error-start-pt (treesit-node-start error-node))
+             (error-end-pt (treesit-node-end error-node))
+             (error-start-linenum (line-number-at-pos error-start-pt))
+             (error-end-linenum (line-number-at-pos error-end-pt)))
+        (when (= error-start-linenum error-end-linenum)
+          (push `(,error-start-linenum . t) error-linenums))))
+    error-linenums))
+
 (defun matlab-ts-mode--ei-no-elements-to-indent ()
   "Return t if no elements in the current line to indent.
 Assumes that current point is at `back-to-indentation'."
@@ -381,18 +409,9 @@ Assumes that current point is at `back-to-indentation'."
      (string-match-p (rx bos (or "line_continuation" "comment") eos) 
first-node-type))
    ;; (2) Syntax error *within* the line? If error node covers whole line, 
assume nodes in
    ;;     line are good, i.e. electric indent the line.
-   (let ((beg (line-beginning-position))
-         (end (line-end-position))
-         (capture-errors (treesit-query-capture (treesit-buffer-root-node) 
'((ERROR) @e))))
-     (cl-loop
-      for capture-error in capture-errors do
-      (let* ((error-node (cdr capture-error))
-             (error-start (treesit-node-start error-node))
-             (error-end (treesit-node-end error-node)))
-        (when (and (> error-start beg)
-                   (< error-end end))
-          (cl-return t))
-        )))))
+   (let ((error-linenums (or matlab-ts-mode--ei-errors-alist 
(matlab-ts-mode--ei-get-errors-alist)))
+         (curr-linenum (line-number-at-pos (point))))
+     (alist-get curr-linenum error-linenums))))
 
 (defun matlab-ts-mode--ei-node-extra-chars (node-end next-node-start)
   "Get extra chars after NODE-END and before NEXT-NODE-START."
@@ -1274,7 +1293,8 @@ This expansion of the region is done to simplify electric 
indent."
          (start-pt-offset (- start-pt (save-excursion
                                         (goto-char start-pt)
                                         ;; offset from beginning of 
start-pt-linenum
-                                        (pos-bol)))))
+                                        (pos-bol))))
+         new-content-buf)
 
     (matlab-ts-mode--ei-workaround-143 beg end) ;; may insert spaces on lines 
in BEG END region
 
@@ -1300,10 +1320,12 @@ This expansion of the region is done to simplify 
electric indent."
             (setq-local matlab-ts-mode--ei-align-assign-alist '((-1 . 0))
                         matlab-ts-mode--ei-align-prop-alist '((-1 . 0))
                         matlab-ts-mode--ei-align-comment-alist '((-1 . 0))
-                        matlab-ts-mode--ei-align-matrix-alist '((-1 . "")))
+                        matlab-ts-mode--ei-align-matrix-alist '((-1 . ""))
+                        matlab-ts-mode--ei-errors-alist 
(matlab-ts-mode--ei-get-errors-alist))
 
-            (let (new-content
-                  updated)
+            (setq new-content-buf (get-buffer-create
+                                   (generate-new-buffer-name " 
*temp-matlab-indent-region*")))
+            (let (region-updated)
 
               (while (<= curr-linenum end-linenum)
                 (beginning-of-line)
@@ -1318,34 +1340,41 @@ This expansion of the region is done to simplify 
electric indent."
                   (when new-start-pt-offset
                     (setq start-pt-offset new-start-pt-offset))
 
-                  (setq new-content (concat new-content new-line
-                                            (when (< curr-linenum end-linenum) 
"\n")))
+                  (with-current-buffer new-content-buf
+                    (insert new-line)
+                    (when (< curr-linenum end-linenum)
+                      (insert "\n")))
+
                   (when line-updated
-                    (setq updated t)))
+                    (setq region-updated t)))
 
                 (forward-line)
                 (setq curr-linenum (1+ curr-linenum)))
 
-              (when updated
+              (when region-updated
                 (save-excursion
                   (goto-char beg)
                   (delete-region beg end)
-                  (insert new-content))
+                  (insert (with-current-buffer new-content-buf
+                            (buffer-string)))
+
+                  ;; Restore end point accounting for whitespace adjustments 
in the lines
+                  (goto-char (point-min))
+                  (forward-line end-linenum)
+                  (setq end (point))))))
 
-                ;; Restore end point accounting for whitespace adjustments in 
the lines
-                (goto-char (point-min))
-                (forward-line end-linenum)
-                (setq end (point)))))
         (setq-local matlab-ts-mode--ei-align-assign-alist nil
                     matlab-ts-mode--ei-align-prop-alist nil
                     matlab-ts-mode--ei-align-comment-alist nil
-                    matlab-ts-mode--ei-align-matrix-alist nil)))
+                    matlab-ts-mode--ei-align-matrix-alist nil
+                    matlab-ts-mode--ei-errors-alist nil)
+        (kill-buffer new-content-buf)))
 
     ;; Update point to keep it on the starting semantic element
     (goto-char (point-min))
     (forward-line (1- start-pt-linenum))
     (forward-char start-pt-offset)
-    
+
     ;; Return updated BEG and END region points
     (cons beg end)))
 
@@ -1353,4 +1382,5 @@ This expansion of the region is done to simplify electric 
indent."
 ;;; matlab-ts-mode--ei.el ends here
 
 ;; LocalWords:  SPDX gmail treesit defcustom bos eos isstring defun eol eobp 
setq curr cdr xr progn
-;; LocalWords:  listp alist dolist setf tmp buf utils linenum nums bobp pcase 
Untabify untabify
+;; LocalWords:  listp alist dolist setf tmp buf utils linenum nums bobp pcase 
Untabify untabify SPC
+;; LocalWords:  linenums reindent bol
diff --git 
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_labmda.m 
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_labmda.m
index 1f82f842cc..0ce893d406 100644
--- a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_labmda.m
+++ b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_labmda.m
@@ -1,5 +1,9 @@
 % -*- matlab-ts -*-
 
+% t-utils-test-indent: no-line-by-line-indent - when we type line-by-line, the 
continuation lines
+% have a syntax error because the continued portion isn't there.
+
+
 l1 = @(x)           ((ischar(x) || isstring(x)));
 
 l2 = @(x)((ischar(x) || isstring(x) || isnumeric(x)) && ...
diff --git 
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_labmda_expected.m
 
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_labmda_expected.m
index 7d08b0d826..feaa438c72 100644
--- 
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_labmda_expected.m
+++ 
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_labmda_expected.m
@@ -1,5 +1,9 @@
 % -*- matlab-ts -*-
 
+% t-utils-test-indent: no-line-by-line-indent - when we type line-by-line, the 
continuation lines
+% have a syntax error because the continued portion isn't there.
+
+
 l1 = @(x) ((ischar(x) || isstring(x)));
 
 l2 = @(x) ((ischar(x) || isstring(x) || isnumeric(x)) && ...
diff --git 
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_labmda_expected_msgs.m
 
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_labmda_expected_msgs.m
index 8c50142801..f2034773d6 100644
--- 
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_labmda_expected_msgs.m
+++ 
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_labmda_expected_msgs.m
@@ -1,5 +1,9 @@
 % -*- matlab-ts -*- %  <{Matched rule: (matlab-ts-mode--i-top-level 
matlab-ts-mode--column-0 0)}>
 
+% t-utils-test-indent: no-line-by-line-indent - when we type line-by-line, the 
continuation lines %  <{Matched rule: (matlab-ts-mode--i-top-level 
matlab-ts-mode--column-0 0)}>
+% have a syntax error because the continued portion isn't there. %  <{Matched 
rule: (matlab-ts-mode--i-block-comment-end-matcher parent 0)}>
+
+
 l1 = @(x) ((ischar(x) || isstring(x))); %  <{Matched rule: 
(matlab-ts-mode--i-top-level matlab-ts-mode--column-0 0)}>
 
 l2 = @(x) ((ischar(x) || isstring(x) || isnumeric(x)) && ... %  <{Matched 
rule: (matlab-ts-mode--i-top-level matlab-ts-mode--column-0 0)}>
diff --git 
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_matrix.m 
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_matrix.m
index 8a294b786f..59f68358ac 100644
--- a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_matrix.m
+++ b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_matrix.m
@@ -1,5 +1,8 @@
 % -*- matlab-ts -*-
 
+% t-utils-test-indent: no-line-by-line-indent - when we type line-by-line, the 
continuation lines
+% have a syntax error because the continued portion isn't there.
+
 a0 = [1; 1];
 
 a1 =   [   [  1 ]; [  7  ]];
diff --git 
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_matrix_expected.m
 
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_matrix_expected.m
index 01fdf189cf..2fc5b10b73 100644
--- 
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_matrix_expected.m
+++ 
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_matrix_expected.m
@@ -1,5 +1,8 @@
 % -*- matlab-ts -*-
 
+% t-utils-test-indent: no-line-by-line-indent - when we type line-by-line, the 
continuation lines
+% have a syntax error because the continued portion isn't there.
+
 a0 = [1; 1];
 
 a1 = [[1]; [7]];
diff --git 
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_matrix_expected_msgs.m
 
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_matrix_expected_msgs.m
index 7747198507..8925e835f2 100644
--- 
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_matrix_expected_msgs.m
+++ 
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_matrix_expected_msgs.m
@@ -1,5 +1,8 @@
 % -*- matlab-ts -*- %  <{Matched rule: (matlab-ts-mode--i-top-level 
matlab-ts-mode--column-0 0)}>
 
+% t-utils-test-indent: no-line-by-line-indent - when we type line-by-line, the 
continuation lines %  <{Matched rule: (matlab-ts-mode--i-top-level 
matlab-ts-mode--column-0 0)}>
+% have a syntax error because the continued portion isn't there. %  <{Matched 
rule: (matlab-ts-mode--i-block-comment-end-matcher parent 0)}>
+
 a0 = [1; 1]; %  <{Matched rule: (matlab-ts-mode--i-top-level 
matlab-ts-mode--column-0 0)}>
 
 a1 = [[1]; [7]]; %  <{Matched rule: (matlab-ts-mode--i-top-level 
matlab-ts-mode--column-0 0)}>
diff --git 
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_range.m 
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_range.m
index 9089610fd4..04e858e1cf 100644
--- a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_range.m
+++ b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_range.m
@@ -1,4 +1,7 @@
 % -*- matlab-ts -*-
 
+% t-utils-test-indent: no-line-by-line-indent - when we type line-by-line, the 
continuation lines
+% have a syntax error because the continued portion isn't there.
+
 dataTbl = [dataTbl(:, 1:varColNumbers(1)-1)...
            tableWithDateColumnOnly dataTbl(:, varColNumbers(1) + 1 : end)];
diff --git 
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_range_expected.m
 
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_range_expected.m
index f203fb49eb..79ec5cef57 100644
--- 
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_range_expected.m
+++ 
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_range_expected.m
@@ -1,4 +1,7 @@
 % -*- matlab-ts -*-
 
+% t-utils-test-indent: no-line-by-line-indent - when we type line-by-line, the 
continuation lines
+% have a syntax error because the continued portion isn't there.
+
 dataTbl = [dataTbl(:, 1 : varColNumbers(1) - 1) ...
            tableWithDateColumnOnly dataTbl(:, varColNumbers(1) + 1 : end)];
diff --git 
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_range_expected_msgs.m
 
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_range_expected_msgs.m
index 037ec102a0..3a0972f261 100644
--- 
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_range_expected_msgs.m
+++ 
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_range_expected_msgs.m
@@ -1,4 +1,7 @@
 % -*- matlab-ts -*- %  <{Matched rule: (matlab-ts-mode--i-top-level 
matlab-ts-mode--column-0 0)}>
 
+% t-utils-test-indent: no-line-by-line-indent - when we type line-by-line, the 
continuation lines %  <{Matched rule: (matlab-ts-mode--i-top-level 
matlab-ts-mode--column-0 0)}>
+% have a syntax error because the continued portion isn't there. %  <{Matched 
rule: (matlab-ts-mode--i-block-comment-end-matcher parent 0)}>
+
 dataTbl = [dataTbl(:, 1 : varColNumbers(1) - 1) ... %  <{Matched rule: 
(matlab-ts-mode--i-top-level matlab-ts-mode--column-0 0)}>
            tableWithDateColumnOnly dataTbl(:, varColNumbers(1) + 1 : end)]; %  
<{Matched rule: ((parent-is "\\`\\(?:function_output\\|row\\)\\'") parent 0)}>
diff --git 
a/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_labmda.m
 
b/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_labmda.m
index 1f82f842cc..0ce893d406 100644
--- 
a/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_labmda.m
+++ 
b/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_labmda.m
@@ -1,5 +1,9 @@
 % -*- matlab-ts -*-
 
+% t-utils-test-indent: no-line-by-line-indent - when we type line-by-line, the 
continuation lines
+% have a syntax error because the continued portion isn't there.
+
+
 l1 = @(x)           ((ischar(x) || isstring(x)));
 
 l2 = @(x)((ischar(x) || isstring(x) || isnumeric(x)) && ...
diff --git 
a/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_labmda_expected.txt
 
b/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_labmda_expected.txt
index 7a7ad9937e..247e7cd5b1 100644
--- 
a/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_labmda_expected.txt
+++ 
b/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_labmda_expected.txt
@@ -1,70 +1,70 @@
 # -*- t-utils-ts-parse-tree -*-
-(source_file<1,185> (comment[1,20]@{% -*- matlab-ts -*-}@)
- (assignment<22,70> left: (identifier[22,24]@{l1}@) =[25,26]
+(source_file<1,350> (comment[1,20]@{% -*- matlab-ts -*-}@) (comment[22,184]@{% 
t-utils-test-indent: no-line-by-line-indent - wh...}@)
+ (assignment<187,235> left: (identifier[187,189]@{l1}@) =[190,191]
   right: 
-   (lambda<27,70> @[27,28] ([28,29]
-    (arguments<29,30> (identifier[29,30]@{x}@))
-    )[30,31]
+   (lambda<192,235> @[192,193] ([193,194]
+    (arguments<194,195> (identifier[194,195]@{x}@))
+    )[195,196]
     expression: 
-     (parenthesis<42,70> ([42,43]
-      (parenthesis<43,69> ([43,44]
-       (boolean_operator<44,68>
+     (parenthesis<207,235> ([207,208]
+      (parenthesis<208,234> ([208,209]
+       (boolean_operator<209,233>
         left: 
-         (function_call<44,53> name: (identifier[44,50]@{ischar}@) ([50,51]
-          (arguments<51,52> argument: (identifier[51,52]@{x}@))
-          )[52,53])
-        ||[54,56]
+         (function_call<209,218> name: (identifier[209,215]@{ischar}@) 
([215,216]
+          (arguments<216,217> argument: (identifier[216,217]@{x}@))
+          )[217,218])
+        ||[219,221]
         right: 
-         (function_call<57,68> name: (identifier[57,65]@{isstring}@) ([65,66]
-          (arguments<66,67> argument: (identifier[66,67]@{x}@))
-          )[67,68]))
-       )[68,69])
-      )[69,70])))
- ;[70,71]
- (assignment<73,164> left: (identifier[73,75]@{l2}@) =[76,77]
+         (function_call<222,233> name: (identifier[222,230]@{isstring}@) 
([230,231]
+          (arguments<231,232> argument: (identifier[231,232]@{x}@))
+          )[232,233]))
+       )[233,234])
+      )[234,235])))
+ ;[235,236]
+ (assignment<238,329> left: (identifier[238,240]@{l2}@) =[241,242]
   right: 
-   (lambda<78,164> @[78,79] ([79,80]
-    (arguments<80,81> (identifier[80,81]@{x}@))
-    )[81,82]
+   (lambda<243,329> @[243,244] ([244,245]
+    (arguments<245,246> (identifier[245,246]@{x}@))
+    )[246,247]
     expression: 
-     (parenthesis<82,164> ([82,83]
-      (boolean_operator<83,163>
+     (parenthesis<247,329> ([247,248]
+      (boolean_operator<248,328>
        left: 
-        (parenthesis<83,125> ([83,84]
-         (boolean_operator<84,124>
+        (parenthesis<248,290> ([248,249]
+         (boolean_operator<249,289>
           left: 
-           (boolean_operator<84,108>
+           (boolean_operator<249,273>
             left: 
-             (function_call<84,93> name: (identifier[84,90]@{ischar}@) ([90,91]
-              (arguments<91,92> argument: (identifier[91,92]@{x}@))
-              )[92,93])
-            ||[94,96]
+             (function_call<249,258> name: (identifier[249,255]@{ischar}@) 
([255,256]
+              (arguments<256,257> argument: (identifier[256,257]@{x}@))
+              )[257,258])
+            ||[259,261]
             right: 
-             (function_call<97,108> name: (identifier[97,105]@{isstring}@) 
([105,106]
-              (arguments<106,107> argument: (identifier[106,107]@{x}@))
-              )[107,108]))
-          ||[109,111]
+             (function_call<262,273> name: (identifier[262,270]@{isstring}@) 
([270,271]
+              (arguments<271,272> argument: (identifier[271,272]@{x}@))
+              )[272,273]))
+          ||[274,276]
           right: 
-           (function_call<112,124> name: (identifier[112,121]@{isnumeric}@) 
([121,122]
-            (arguments<122,123> argument: (identifier[122,123]@{x}@))
-            )[123,124]))
-         )[124,125])
-       &&[126,128] (line_continuation[129,133]@{...\n}@)
+           (function_call<277,289> name: (identifier[277,286]@{isnumeric}@) 
([286,287]
+            (arguments<287,288> argument: (identifier[287,288]@{x}@))
+            )[288,289]))
+         )[289,290])
+       &&[291,293] (line_continuation[294,298]@{...\n}@)
        right: 
-        (not_operator<143,163> ~[143,144]
-         (function_call<144,163> name: (identifier[144,151]@{strcmpi}@) 
([151,152]
-          (arguments<152,162> argument: (identifier[152,153]@{x}@) ,[153,154]
-           (string<155,162> '[155,156] (string_content[156,161]@{fubar}@) 
'[161,162]))
-          )[162,163])))
-      )[163,164])))
- ;[164,165]
- (assignment<167,183> left: (identifier[167,169]@{l3}@) =[170,171]
+        (not_operator<308,328> ~[308,309]
+         (function_call<309,328> name: (identifier[309,316]@{strcmpi}@) 
([316,317]
+          (arguments<317,327> argument: (identifier[317,318]@{x}@) ,[318,319]
+           (string<320,327> '[320,321] (string_content[321,326]@{fubar}@) 
'[326,327]))
+          )[327,328])))
+      )[328,329])))
+ ;[329,330]
+ (assignment<332,348> left: (identifier[332,334]@{l3}@) =[335,336]
   right: 
-   (lambda<172,183> @[172,173] ([173,174]
-    (arguments<174,175> (identifier[174,175]@{x}@))
-    )[175,176]
+   (lambda<337,348> @[337,338] ([338,339]
+    (arguments<339,340> (identifier[339,340]@{x}@))
+    )[340,341]
     expression: 
-     (function_call<176,183> name: (identifier[176,180]@{disp}@) ([180,181]
-      (arguments<181,182> argument: (identifier[181,182]@{x}@))
-      )[182,183])))
- ;[183,184] \n[184,185])
+     (function_call<341,348> name: (identifier[341,345]@{disp}@) ([345,346]
+      (arguments<346,347> argument: (identifier[346,347]@{x}@))
+      )[347,348])))
+ ;[348,349] \n[349,350])
diff --git 
a/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_matrix.m
 
b/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_matrix.m
index 8a294b786f..59f68358ac 100644
--- 
a/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_matrix.m
+++ 
b/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_matrix.m
@@ -1,5 +1,8 @@
 % -*- matlab-ts -*-
 
+% t-utils-test-indent: no-line-by-line-indent - when we type line-by-line, the 
continuation lines
+% have a syntax error because the continued portion isn't there.
+
 a0 = [1; 1];
 
 a1 =   [   [  1 ]; [  7  ]];
diff --git 
a/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_matrix_expected.txt
 
b/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_matrix_expected.txt
index e649563088..45b173789b 100644
--- 
a/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_matrix_expected.txt
+++ 
b/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_matrix_expected.txt
@@ -1,358 +1,358 @@
 # -*- t-utils-ts-parse-tree -*-
-(source_file<1,952> (comment[1,20]@{% -*- matlab-ts -*-}@)
- (assignment<22,33> left: (identifier[22,24]@{a0}@) =[25,26]
+(source_file<1,1116> (comment[1,20]@{% -*- matlab-ts -*-}@) 
(comment[22,184]@{% t-utils-test-indent: no-line-by-line-indent - wh...}@)
+ (assignment<186,197> left: (identifier[186,188]@{a0}@) =[189,190]
   right: 
-   (matrix<27,33> [[27,28]
-    (row<28,29> (number[28,29]@{1}@))
-    (row<31,32> (number[31,32]@{1}@))
-    ][32,33]))
- ;[33,34]
- (assignment<36,63> left: (identifier[36,38]@{a1}@) =[39,40]
+   (matrix<191,197> [[191,192]
+    (row<192,193> (number[192,193]@{1}@))
+    (row<195,196> (number[195,196]@{1}@))
+    ][196,197]))
+ ;[197,198]
+ (assignment<200,227> left: (identifier[200,202]@{a1}@) =[203,204]
   right: 
-   (matrix<43,63> [[43,44]
-    (row<47,53>
-     (matrix<47,53> [[47,48]
-      (row<50,51> (number[50,51]@{1}@))
-      ][52,53]))
-    (row<55,62>
-     (matrix<55,62> [[55,56]
-      (row<58,59> (number[58,59]@{7}@))
-      ][61,62]))
-    ][62,63]))
- ;[63,64]
- (assignment<66,113> left: (identifier[66,68]@{a2}@) =[69,70]
+   (matrix<207,227> [[207,208]
+    (row<211,217>
+     (matrix<211,217> [[211,212]
+      (row<214,215> (number[214,215]@{1}@))
+      ][216,217]))
+    (row<219,226>
+     (matrix<219,226> [[219,220]
+      (row<222,223> (number[222,223]@{7}@))
+      ][225,226]))
+    ][226,227]))
+ ;[227,228]
+ (assignment<230,277> left: (identifier[230,232]@{a2}@) =[233,234]
   right: 
-   (matrix<73,113> [[73,74]
-    (row<77,94>
-     (matrix<77,94> [[77,78]
-      (row<80,93> (number[80,81]@{1}@) ,[81,82] (number[83,84]@{3}@) ,[84,85]
-       (binary_operator<86,93>
+   (matrix<237,277> [[237,238]
+    (row<241,258>
+     (matrix<241,258> [[241,242]
+      (row<244,257> (number[244,245]@{1}@) ,[245,246] (number[247,248]@{3}@) 
,[248,249]
+       (binary_operator<250,257>
         left: 
-         (parenthesis<86,91> ([86,87]
-          (binary_operator<87,90> left: (number[87,88]@{4}@) +[88,89] right: 
(number[89,90]@{4}@))
-          )[90,91])
-        *[91,92] right: (number[92,93]@{2}@)))
-      ][93,94]))
-    (row<100,112>
-     (matrix<100,112> [[100,101]
-      (row<103,109> (number[103,104]@{5}@) ,[104,105] (number[105,106]@{6}@) 
,[106,107] (number[108,109]@{7}@))
-      ][111,112]))
-    ][112,113]))
- ;[113,114]
- (assignment<116,140> left: (identifier[116,117]@{b}@) =[118,119]
+         (parenthesis<250,255> ([250,251]
+          (binary_operator<251,254> left: (number[251,252]@{4}@) +[252,253] 
right: (number[253,254]@{4}@))
+          )[254,255])
+        *[255,256] right: (number[256,257]@{2}@)))
+      ][257,258]))
+    (row<264,276>
+     (matrix<264,276> [[264,265]
+      (row<267,273> (number[267,268]@{5}@) ,[268,269] (number[269,270]@{6}@) 
,[270,271] (number[272,273]@{7}@))
+      ][275,276]))
+    ][276,277]))
+ ;[277,278]
+ (assignment<280,304> left: (identifier[280,281]@{b}@) =[282,283]
   right: 
-   (matrix<123,140> [[123,124]
-    (row<124,131>
-     (matrix<124,131> [[124,125]
-      (row<125,130> (number[125,126]@{1}@) ,[126,127] (number[127,128]@{3}@) 
,[128,129] (number[129,130]@{4}@))
-      ][130,131]))
-    (row<132,139>
-     (matrix<132,139> [[132,133]
-      (row<133,138> (number[133,134]@{5}@) ,[134,135] (number[135,136]@{6}@) 
,[136,137] (number[137,138]@{7}@))
-      ][138,139]))
-    ][139,140]))
- \n[140,142]
- (assignment<142,159> left: (identifier[142,143]@{c}@) =[144,145]
+   (matrix<287,304> [[287,288]
+    (row<288,295>
+     (matrix<288,295> [[288,289]
+      (row<289,294> (number[289,290]@{1}@) ,[290,291] (number[291,292]@{3}@) 
,[292,293] (number[293,294]@{4}@))
+      ][294,295]))
+    (row<296,303>
+     (matrix<296,303> [[296,297]
+      (row<297,302> (number[297,298]@{5}@) ,[298,299] (number[299,300]@{6}@) 
,[300,301] (number[301,302]@{7}@))
+      ][302,303]))
+    ][303,304]))
+ \n[304,306]
+ (assignment<306,323> left: (identifier[306,307]@{c}@) =[308,309]
   right: 
-   (matrix<149,159> [[149,150]
-    (row<150,156> (number[150,151]@{1}@) ,[153,154] (number[155,156]@{2}@))
-    ][158,159]))
- ;[159,160]
- (assignment<162,173> left: (identifier[162,163]@{d}@) =[163,164]
+   (matrix<313,323> [[313,314]
+    (row<314,320> (number[314,315]@{1}@) ,[317,318] (number[319,320]@{2}@))
+    ][322,323]))
+ ;[323,324]
+ (assignment<326,337> left: (identifier[326,327]@{d}@) =[327,328]
   right: 
-   (matrix<164,173> [[164,165]
-    (row<165,172> (number[165,166]@{0}@) ,[171,171] (number[171,172]@{0}@))
-    ][172,173]))
- ;[173,174]
- (assignment<176,179> left: (identifier[176,177]@{e}@) =[177,178] right: 
(number[178,179]@{0}@))
- \n[179,181]
- (binary_operator<181,184> left: (identifier[181,182]@{e}@) +[182,183] right: 
(identifier[183,184]@{e}@))
- \n[184,186]
- (matrix<186,196> [[186,187]
-  (row<187,195>
-   (unary_operator<187,189> -[187,188] operand: (identifier[188,189]@{e}@))
-   ,[193,193]
-   (unary_operator<193,195> +[193,194] operand: (identifier[194,195]@{e}@)))
-  ][195,196])
- \n[196,198]
- (assignment<198,215> left: (identifier[198,199]@{f}@) =[200,201]
+   (matrix<328,337> [[328,329]
+    (row<329,336> (number[329,330]@{0}@) ,[335,335] (number[335,336]@{0}@))
+    ][336,337]))
+ ;[337,338]
+ (assignment<340,343> left: (identifier[340,341]@{e}@) =[341,342] right: 
(number[342,343]@{0}@))
+ \n[343,345]
+ (binary_operator<345,348> left: (identifier[345,346]@{e}@) +[346,347] right: 
(identifier[347,348]@{e}@))
+ \n[348,350]
+ (matrix<350,360> [[350,351]
+  (row<351,359>
+   (unary_operator<351,353> -[351,352] operand: (identifier[352,353]@{e}@))
+   ,[357,357]
+   (unary_operator<357,359> +[357,358] operand: (identifier[358,359]@{e}@)))
+  ][359,360])
+ \n[360,362]
+ (assignment<362,379> left: (identifier[362,363]@{f}@) =[364,365]
   right: 
-   (matrix<202,215> [[202,203]
-    (row<203,214>
-     (binary_operator<203,208> left: (identifier[203,204]@{e}@) +[205,206] 
right: (identifier[207,208]@{e}@))
-     ,[209,209]
-     (unary_operator<209,211> -[209,210] operand: (identifier[210,211]@{e}@))
-     ,[212,212]
-     (unary_operator<212,214> +[212,213] operand: (identifier[213,214]@{e}@)))
-    ][214,215]))
- \n[215,217]
- (assignment<217,224> left: (identifier[217,218]@{g}@) =[219,220]
-  right: (unary_operator<221,224> -[221,222] operand: 
(identifier[223,224]@{e}@)))
- \n[224,226]
- (assignment<229,265> left: (identifier[229,230]@{h}@) =[231,232]
+   (matrix<366,379> [[366,367]
+    (row<367,378>
+     (binary_operator<367,372> left: (identifier[367,368]@{e}@) +[369,370] 
right: (identifier[371,372]@{e}@))
+     ,[373,373]
+     (unary_operator<373,375> -[373,374] operand: (identifier[374,375]@{e}@))
+     ,[376,376]
+     (unary_operator<376,378> +[376,377] operand: (identifier[377,378]@{e}@)))
+    ][378,379]))
+ \n[379,381]
+ (assignment<381,388> left: (identifier[381,382]@{g}@) =[383,384]
+  right: (unary_operator<385,388> -[385,386] operand: 
(identifier[387,388]@{e}@)))
+ \n[388,390]
+ (assignment<393,429> left: (identifier[393,394]@{h}@) =[395,396]
   right: 
-   (matrix<238,265> [[238,239]
-    (row<239,242> (number[239,240]@{1}@) ,[241,241] (number[241,242]@{2}@))
-    (line_continuation[244,248]@{...\n}@)
-    (row<255,261> (number[255,256]@{3}@) ,[260,260] (number[260,261]@{4}@))
-    ][264,265]))
- ;[265,266]
- (assignment<268,304> left: (identifier[268,270]@{c2}@) =[271,272]
+   (matrix<402,429> [[402,403]
+    (row<403,406> (number[403,404]@{1}@) ,[405,405] (number[405,406]@{2}@))
+    (line_continuation[408,412]@{...\n}@)
+    (row<419,425> (number[419,420]@{3}@) ,[424,424] (number[424,425]@{4}@))
+    ][428,429]))
+ ;[429,430]
+ (assignment<432,468> left: (identifier[432,434]@{c2}@) =[435,436]
   right: 
-   (cell<273,304> {[273,274]
-    (row<276,303>
-     (matrix<276,290> [[276,277]
-      (row<277,289>
-       (string<277,283> '[277,278] (string_content[278,282]@{freq}@) 
'[282,283])
-       ,[286,286]
-       (string<286,289> '[286,287] (string_content[287,288]@{%}@) '[288,289]))
-      ][289,290])
-     ,[293,293]
-     (function_call<293,303> name: (identifier[293,300]@{num2str}@) ([300,301]
-      (arguments<301,302> argument: (number[301,302]@{2}@))
-      )[302,303]))
-    }[303,304]))
- ;[304,305]
- (assignment<307,330> left: (identifier[307,309]@{c3}@) =[310,311]
+   (cell<437,468> {[437,438]
+    (row<440,467>
+     (matrix<440,454> [[440,441]
+      (row<441,453>
+       (string<441,447> '[441,442] (string_content[442,446]@{freq}@) 
'[446,447])
+       ,[450,450]
+       (string<450,453> '[450,451] (string_content[451,452]@{%}@) '[452,453]))
+      ][453,454])
+     ,[457,457]
+     (function_call<457,467> name: (identifier[457,464]@{num2str}@) ([464,465]
+      (arguments<465,466> argument: (number[465,466]@{2}@))
+      )[466,467]))
+    }[467,468]))
+ ;[468,469]
+ (assignment<471,494> left: (identifier[471,473]@{c3}@) =[474,475]
   right: 
-   (cell<312,330> {[312,313]
-    (row<313,329> (identifier[313,314]@{a}@) ,[315,315] 
(identifier[315,316]@{b}@) ,[317,317]
-     (matrix<317,324> [[317,318]
-      (row<318,323> (identifier[318,319]@{c}@) ,[320,320]
-       (string<320,323> '[320,321] (string_content[321,322]@{%}@) '[322,323]))
-      ][323,324])
-     ,[325,325]
-     (function_call<325,329> name: (identifier[325,326]@{f}@) ([326,327]
-      (arguments<327,328> argument: (number[327,328]@{1}@))
-      )[328,329]))
-    }[329,330]))
- ;[330,331]
- (assignment<333,368> left: (identifier[333,334]@{x}@) =[335,336]
+   (cell<476,494> {[476,477]
+    (row<477,493> (identifier[477,478]@{a}@) ,[479,479] 
(identifier[479,480]@{b}@) ,[481,481]
+     (matrix<481,488> [[481,482]
+      (row<482,487> (identifier[482,483]@{c}@) ,[484,484]
+       (string<484,487> '[484,485] (string_content[485,486]@{%}@) '[486,487]))
+      ][487,488])
+     ,[489,489]
+     (function_call<489,493> name: (identifier[489,490]@{f}@) ([490,491]
+      (arguments<491,492> argument: (number[491,492]@{1}@))
+      )[492,493]))
+    }[493,494]))
+ ;[494,495]
+ (assignment<497,532> left: (identifier[497,498]@{x}@) =[499,500]
   right: 
-   (matrix<337,368> [[337,338]
-    (row<345,349> (number[345,346]@{1}@) ,[346,347] (number[348,349]@{2}@))
-    (row<357,361> (number[357,358]@{3}@) ,[358,359] (number[360,361]@{4}@))
-    ][367,368]))
- ;[368,369]
- (assignment<371,422> left: (identifier[371,373]@{x2}@) =[374,375]
+   (matrix<501,532> [[501,502]
+    (row<509,513> (number[509,510]@{1}@) ,[510,511] (number[512,513]@{2}@))
+    (row<521,525> (number[521,522]@{3}@) ,[522,523] (number[524,525]@{4}@))
+    ][531,532]))
+ ;[532,533]
+ (assignment<535,586> left: (identifier[535,537]@{x2}@) =[538,539]
   right: 
-   (matrix<376,422> [[376,377]
-    (row<384,392> (number[384,385]@{1}@) ,[387,388] (number[391,392]@{2}@))
-    (row<407,413> (number[407,408]@{3}@) ,[411,412] (number[412,413]@{4}@))
-    ][421,422]))
- ;[422,423]
- (assignment<426,555> left: (identifier[426,428]@{d1}@) =[429,430]
+   (matrix<540,586> [[540,541]
+    (row<548,556> (number[548,549]@{1}@) ,[551,552] (number[555,556]@{2}@))
+    (row<571,577> (number[571,572]@{3}@) ,[575,576] (number[576,577]@{4}@))
+    ][585,586]))
+ ;[586,587]
+ (assignment<590,719> left: (identifier[590,592]@{d1}@) =[593,594]
   right: 
-   (function_call<431,555> name: (identifier[431,441]@{dictionary}@) ([441,442]
-    (arguments<442,554>
+   (function_call<595,719> name: (identifier[595,605]@{dictionary}@) ([605,606]
+    (arguments<606,718>
      argument: 
-      (matrix<442,489> [[442,443]
-       (row<443,464>
-        (function_call<443,464> name: 
(identifier[443,459]@{nativeProperties}@) ([459,460]
-         (arguments<460,463>
-          argument: (spread_operator<460,461> :[460,461])
-          ,[461,462] (number[462,463]@{1}@))
-         )[463,464]))
-       ;[464,465]
-       (row<465,488>
-        (function_call<465,488> name: 
(identifier[465,483]@{propertyStateArray}@) ([483,484]
-         (arguments<484,487>
-          argument: (spread_operator<484,485> :[484,485])
-          ,[485,486] (number[486,487]@{1}@))
-         )[487,488]))
-       ][488,489])
-     ,[489,490] (line_continuation[491,495]@{...\n}@)
-     (matrix<507,554> [[507,508]
-      (row<508,529>
-       (function_call<508,529> name: (identifier[508,524]@{nativeProperties}@) 
([524,525]
-        (arguments<525,528>
-         argument: (spread_operator<525,526> :[525,526])
-         ,[526,527] (number[527,528]@{2}@))
-        )[528,529]))
-      ;[529,530]
-      (row<530,553>
-       (function_call<530,553> name: 
(identifier[530,548]@{propertyStateArray}@) ([548,549]
-        (arguments<549,552>
-         argument: (spread_operator<549,550> :[549,550])
-         ,[550,551] (number[551,552]@{2}@))
-        )[552,553]))
-      ][553,554]))
-    )[554,555]))
- ;[555,556]
- (assignment<558,697> left: (identifier[558,560]@{d2}@) =[561,562]
+      (matrix<606,653> [[606,607]
+       (row<607,628>
+        (function_call<607,628> name: 
(identifier[607,623]@{nativeProperties}@) ([623,624]
+         (arguments<624,627>
+          argument: (spread_operator<624,625> :[624,625])
+          ,[625,626] (number[626,627]@{1}@))
+         )[627,628]))
+       ;[628,629]
+       (row<629,652>
+        (function_call<629,652> name: 
(identifier[629,647]@{propertyStateArray}@) ([647,648]
+         (arguments<648,651>
+          argument: (spread_operator<648,649> :[648,649])
+          ,[649,650] (number[650,651]@{1}@))
+         )[651,652]))
+       ][652,653])
+     ,[653,654] (line_continuation[655,659]@{...\n}@)
+     (matrix<671,718> [[671,672]
+      (row<672,693>
+       (function_call<672,693> name: (identifier[672,688]@{nativeProperties}@) 
([688,689]
+        (arguments<689,692>
+         argument: (spread_operator<689,690> :[689,690])
+         ,[690,691] (number[691,692]@{2}@))
+        )[692,693]))
+      ;[693,694]
+      (row<694,717>
+       (function_call<694,717> name: 
(identifier[694,712]@{propertyStateArray}@) ([712,713]
+        (arguments<713,716>
+         argument: (spread_operator<713,714> :[713,714])
+         ,[714,715] (number[715,716]@{2}@))
+        )[716,717]))
+      ][717,718]))
+    )[718,719]))
+ ;[719,720]
+ (assignment<722,861> left: (identifier[722,724]@{d2}@) =[725,726]
   right: 
-   (function_call<563,697> name: (identifier[563,573]@{dictionary}@) ([573,574]
-    (arguments<574,696>
+   (function_call<727,861> name: (identifier[727,737]@{dictionary}@) ([737,738]
+    (arguments<738,860>
      argument: 
-      (matrix<574,624> [[574,575]
-       (row<575,597>
-        (function_call<575,597> name: 
(identifier[575,591]@{nativeProperties}@) ([591,592]
-         (arguments<592,596>
-          argument: (spread_operator<592,593> :[592,593])
-          ,[593,594] (number[595,596]@{1}@))
-         )[596,597]))
-       (row<599,623>
-        (function_call<599,623> name: 
(identifier[599,617]@{propertyStateArray}@) ([617,618]
-         (arguments<618,622>
-          argument: (spread_operator<618,619> :[618,619])
-          ,[619,620] (number[621,622]@{1}@))
-         )[622,623]))
-       ][623,624])
-     ,[624,625] (line_continuation[626,630]@{...\n}@)
-     (matrix<646,696> [[646,647]
-      (row<647,669>
-       (function_call<647,669> name: (identifier[647,663]@{nativeProperties}@) 
([663,664]
-        (arguments<664,668>
-         argument: (spread_operator<664,665> :[664,665])
-         ,[665,666] (number[667,668]@{2}@))
-        )[668,669]))
-      (row<671,695>
-       (function_call<671,695> name: 
(identifier[671,689]@{propertyStateArray}@) ([689,690]
-        (arguments<690,694>
-         argument: (spread_operator<690,691> :[690,691])
-         ,[691,692] (number[693,694]@{2}@))
-        )[694,695]))
-      ][695,696]))
-    )[696,697]))
- ;[697,698]
- (assignment<700,784> left: (identifier[700,702]@{m3}@) =[703,704]
+      (matrix<738,788> [[738,739]
+       (row<739,761>
+        (function_call<739,761> name: 
(identifier[739,755]@{nativeProperties}@) ([755,756]
+         (arguments<756,760>
+          argument: (spread_operator<756,757> :[756,757])
+          ,[757,758] (number[759,760]@{1}@))
+         )[760,761]))
+       (row<763,787>
+        (function_call<763,787> name: 
(identifier[763,781]@{propertyStateArray}@) ([781,782]
+         (arguments<782,786>
+          argument: (spread_operator<782,783> :[782,783])
+          ,[783,784] (number[785,786]@{1}@))
+         )[786,787]))
+       ][787,788])
+     ,[788,789] (line_continuation[790,794]@{...\n}@)
+     (matrix<810,860> [[810,811]
+      (row<811,833>
+       (function_call<811,833> name: (identifier[811,827]@{nativeProperties}@) 
([827,828]
+        (arguments<828,832>
+         argument: (spread_operator<828,829> :[828,829])
+         ,[829,830] (number[831,832]@{2}@))
+        )[832,833]))
+      (row<835,859>
+       (function_call<835,859> name: 
(identifier[835,853]@{propertyStateArray}@) ([853,854]
+        (arguments<854,858>
+         argument: (spread_operator<854,855> :[854,855])
+         ,[855,856] (number[857,858]@{2}@))
+        )[858,859]))
+      ][859,860]))
+    )[860,861]))
+ ;[861,862]
+ (assignment<864,948> left: (identifier[864,866]@{m3}@) =[867,868]
   right: 
-   (function_call<705,784> name: (identifier[705,710]@{uint8}@) ([710,711]
-    (arguments<713,783>
+   (function_call<869,948> name: (identifier[869,874]@{uint8}@) ([874,875]
+    (arguments<877,947>
      argument: 
-      (matrix<713,783> [[713,714]
-       (row<716,726>
-        (function_call<716,726> name: (identifier[716,720]@{ones}@) ([720,721]
-         (arguments<721,725> argument: (number[721,723]@{20}@) ,[723,724] 
(number[724,725]@{1}@))
-         )[725,726]))
-       (row<730,741>
-        (binary_operator<730,741> left: (number[730,731]@{2}@) *[731,732]
+      (matrix<877,947> [[877,878]
+       (row<880,890>
+        (function_call<880,890> name: (identifier[880,884]@{ones}@) ([884,885]
+         (arguments<885,889> argument: (number[885,887]@{20}@) ,[887,888] 
(number[888,889]@{1}@))
+         )[889,890]))
+       (row<894,905>
+        (binary_operator<894,905> left: (number[894,895]@{2}@) *[895,896]
          right: 
-          (function_call<732,741> name: (identifier[732,736]@{ones}@) 
([736,737]
-           (arguments<737,740> argument: (number[737,738]@{8}@) ,[738,739] 
(number[739,740]@{1}@))
-           )[740,741])))
-       (row<742,751>
-        (function_call<742,751> name: (identifier[742,746]@{ones}@) ([746,747]
-         (arguments<747,750> argument: (number[747,748]@{8}@) ,[748,749] 
(number[749,750]@{1}@))
-         )[750,751]))
-       (row<756,767>
-        (binary_operator<756,767> left: (number[756,757]@{2}@) *[757,758]
+          (function_call<896,905> name: (identifier[896,900]@{ones}@) 
([900,901]
+           (arguments<901,904> argument: (number[901,902]@{8}@) ,[902,903] 
(number[903,904]@{1}@))
+           )[904,905])))
+       (row<906,915>
+        (function_call<906,915> name: (identifier[906,910]@{ones}@) ([910,911]
+         (arguments<911,914> argument: (number[911,912]@{8}@) ,[912,913] 
(number[913,914]@{1}@))
+         )[914,915]))
+       (row<920,931>
+        (binary_operator<920,931> left: (number[920,921]@{2}@) *[921,922]
          right: 
-          (function_call<758,767> name: (identifier[758,762]@{ones}@) 
([762,763]
-           (arguments<763,766> argument: (number[763,764]@{8}@) ,[764,765] 
(number[765,766]@{1}@))
-           )[766,767])))
-       (row<769,778>
-        (function_call<769,778> name: (identifier[769,773]@{ones}@) ([773,774]
-         (arguments<774,777> argument: (number[774,775]@{7}@) ,[775,776] 
(number[776,777]@{1}@))
-         )[777,778]))
-       ][782,783]))
-    )[783,784]))
- ;[784,785]
- (assignment<787,842>
+          (function_call<922,931> name: (identifier[922,926]@{ones}@) 
([926,927]
+           (arguments<927,930> argument: (number[927,928]@{8}@) ,[928,929] 
(number[929,930]@{1}@))
+           )[930,931])))
+       (row<933,942>
+        (function_call<933,942> name: (identifier[933,937]@{ones}@) ([937,938]
+         (arguments<938,941> argument: (number[938,939]@{7}@) ,[939,940] 
(number[940,941]@{1}@))
+         )[941,942]))
+       ][946,947]))
+    )[947,948]))
+ ;[948,949]
+ (assignment<951,1006>
   left: 
-   (function_call<787,799> name: (identifier[787,793]@{foo123}@) ([793,794]
-    (arguments<794,798> argument: (identifier[794,796]@{t0}@) ,[796,797]
-     (spread_operator<797,798> :[797,798]))
-    )[798,799])
-  =[800,801]
+   (function_call<951,963> name: (identifier[951,957]@{foo123}@) ([957,958]
+    (arguments<958,962> argument: (identifier[958,960]@{t0}@) ,[960,961]
+     (spread_operator<961,962> :[961,962]))
+    )[962,963])
+  =[964,965]
   right: 
-   (binary_operator<802,842>
+   (binary_operator<966,1006>
     left: 
-     (function_call<802,815> name: (identifier[802,805]@{tan}@) ([805,806]
-      (arguments<806,814>
+     (function_call<966,979> name: (identifier[966,969]@{tan}@) ([969,970]
+      (arguments<970,978>
        argument: 
-        (binary_operator<806,814>
+        (binary_operator<970,978>
          left: 
-          (function_call<806,812> name: (identifier[806,808]@{th}@) ([808,809]
-           (arguments<809,811> argument: (identifier[809,811]@{t0}@))
-           )[811,812])
-         /[812,813] right: (number[813,814]@{2}@)))
-      )[814,815])
-    .*[815,817]
+          (function_call<970,976> name: (identifier[970,972]@{th}@) ([972,973]
+           (arguments<973,975> argument: (identifier[973,975]@{t0}@))
+           )[975,976])
+         /[976,977] right: (number[977,978]@{2}@)))
+      )[978,979])
+    .*[979,981]
     right: 
-     (matrix<817,842> [[817,818]
-      (row<818,841>
-       (postfix_operator<818,825>
+     (matrix<981,1006> [[981,982]
+      (row<982,1005>
+       (postfix_operator<982,989>
         operand: 
-         (function_call<818,824> name: (identifier[818,820]@{sx}@) ([820,821]
-          (arguments<821,823> argument: (identifier[821,823]@{t0}@))
-          )[823,824])
-        '[824,825])
-       ,[826,826]
-       (postfix_operator<826,833>
+         (function_call<982,988> name: (identifier[982,984]@{sx}@) ([984,985]
+          (arguments<985,987> argument: (identifier[985,987]@{t0}@))
+          )[987,988])
+        '[988,989])
+       ,[990,990]
+       (postfix_operator<990,997>
         operand: 
-         (function_call<826,832> name: (identifier[826,828]@{sy}@) ([828,829]
-          (arguments<829,831> argument: (identifier[829,831]@{t0}@))
-          )[831,832])
-        '[832,833])
-       ,[834,834]
-       (postfix_operator<834,841>
+         (function_call<990,996> name: (identifier[990,992]@{sy}@) ([992,993]
+          (arguments<993,995> argument: (identifier[993,995]@{t0}@))
+          )[995,996])
+        '[996,997])
+       ,[998,998]
+       (postfix_operator<998,1005>
         operand: 
-         (function_call<834,840> name: (identifier[834,836]@{sz}@) ([836,837]
-          (arguments<837,839> argument: (identifier[837,839]@{t0}@))
-          )[839,840])
-        '[840,841]))
-      ][841,842])))
- ;[842,843]
- (assignment<845,892> left: (identifier[845,847]@{c3}@) =[848,849]
+         (function_call<998,1004> name: (identifier[998,1000]@{sz}@) 
([1000,1001]
+          (arguments<1001,1003> argument: (identifier[1001,1003]@{t0}@))
+          )[1003,1004])
+        '[1004,1005]))
+      ][1005,1006])))
+ ;[1006,1007]
+ (assignment<1009,1056> left: (identifier[1009,1011]@{c3}@) =[1012,1013]
   right: 
-   (cell<850,892> {[850,851]
-    (row<851,891>
-     (cell<851,872> {[851,852]
-      (row<852,871>
-       (matrix<852,861> [[852,853]
-        (row<853,860> (number[853,858]@{17.50}@) ,[859,859] 
(number[859,860]@{0}@))
-        ][860,861])
-       ,[862,862]
-       (matrix<862,871> [[862,863]
-        (row<863,870> (number[863,868]@{17.50}@) ,[869,869] 
(number[869,870]@{0}@))
-        ][870,871]))
-      }[871,872])
-     ,[873,873]
-     (cell<873,891> {[873,874]
-      (row<874,890>
-       (matrix<874,881> [[874,875]
-        (row<875,880> (number[875,878]@{120}@) ,[879,879] 
(number[879,880]@{0}@))
-        ][880,881])
-       ,[882,882]
-       (matrix<882,890> [[882,883]
-        (row<883,889> (number[883,886]@{120}@) ,[887,887] 
(number[887,889]@{20}@))
-        ][889,890]))
-      }[890,891]))
-    }[891,892]))
- ;[892,893]
- (assignment<896,914>
+   (cell<1014,1056> {[1014,1015]
+    (row<1015,1055>
+     (cell<1015,1036> {[1015,1016]
+      (row<1016,1035>
+       (matrix<1016,1025> [[1016,1017]
+        (row<1017,1024> (number[1017,1022]@{17.50}@) ,[1023,1023] 
(number[1023,1024]@{0}@))
+        ][1024,1025])
+       ,[1026,1026]
+       (matrix<1026,1035> [[1026,1027]
+        (row<1027,1034> (number[1027,1032]@{17.50}@) ,[1033,1033] 
(number[1033,1034]@{0}@))
+        ][1034,1035]))
+      }[1035,1036])
+     ,[1037,1037]
+     (cell<1037,1055> {[1037,1038]
+      (row<1038,1054>
+       (matrix<1038,1045> [[1038,1039]
+        (row<1039,1044> (number[1039,1042]@{120}@) ,[1043,1043] 
(number[1043,1044]@{0}@))
+        ][1044,1045])
+       ,[1046,1046]
+       (matrix<1046,1054> [[1046,1047]
+        (row<1047,1053> (number[1047,1050]@{120}@) ,[1051,1051] 
(number[1051,1053]@{20}@))
+        ][1053,1054]))
+      }[1054,1055]))
+    }[1055,1056]))
+ ;[1056,1057]
+ (assignment<1060,1078>
   left: 
-   (function_call<896,901> name: (identifier[896,898]@{c4}@) {[898,899]
-    (arguments<899,900> argument: (number[899,900]@{1}@))
-    }[900,901])
-  =[902,903]
+   (function_call<1060,1065> name: (identifier[1060,1062]@{c4}@) {[1062,1063]
+    (arguments<1063,1064> argument: (number[1063,1064]@{1}@))
+    }[1064,1065])
+  =[1066,1067]
   right: 
-   (matrix<904,914> [[904,905]
-    (row<905,908> (number[905,906]@{1}@) ,[907,907] (number[907,908]@{2}@))
-    (row<910,913> (number[910,911]@{3}@) ,[912,912] (number[912,913]@{4}@))
-    ][913,914]))
- ;[914,915]
- (assignment<916,950> left: (identifier[916,918]@{v4}@) =[919,920]
+   (matrix<1068,1078> [[1068,1069]
+    (row<1069,1072> (number[1069,1070]@{1}@) ,[1071,1071] 
(number[1071,1072]@{2}@))
+    (row<1074,1077> (number[1074,1075]@{3}@) ,[1076,1076] 
(number[1076,1077]@{4}@))
+    ][1077,1078]))
+ ;[1078,1079]
+ (assignment<1080,1114> left: (identifier[1080,1082]@{v4}@) =[1083,1084]
   right: 
-   (matrix<921,950> [[921,922]
-    (row<922,949>
-     (function_call<922,934>
+   (matrix<1085,1114> [[1085,1086]
+    (row<1086,1113>
+     (function_call<1086,1098>
       name: 
-       (function_call<922,927> name: (identifier[922,924]@{c4}@) {[924,925]
-        (arguments<925,926> argument: (number[925,926]@{1}@))
-        }[926,927])
-      ([927,928]
-      (arguments<928,933> argument: (number[928,929]@{1}@) ,[929,930] 
(number[932,933]@{1}@))
-      )[933,934])
-     ,[934,935]
-     (function_call<936,949>
+       (function_call<1086,1091> name: (identifier[1086,1088]@{c4}@) 
{[1088,1089]
+        (arguments<1089,1090> argument: (number[1089,1090]@{1}@))
+        }[1090,1091])
+      ([1091,1092]
+      (arguments<1092,1097> argument: (number[1092,1093]@{1}@) ,[1093,1094] 
(number[1096,1097]@{1}@))
+      )[1097,1098])
+     ,[1098,1099]
+     (function_call<1100,1113>
       name: 
-       (function_call<936,941> name: (identifier[936,938]@{c4}@) {[938,939]
-        (arguments<939,940> argument: (number[939,940]@{1}@))
-        }[940,941])
-      ([941,942]
-      (arguments<942,948> argument: (number[942,943]@{1}@) ,[943,944] 
(number[947,948]@{1}@))
-      )[948,949]))
-    ][949,950]))
- ;[950,951] \n[951,952])
+       (function_call<1100,1105> name: (identifier[1100,1102]@{c4}@) 
{[1102,1103]
+        (arguments<1103,1104> argument: (number[1103,1104]@{1}@))
+        }[1104,1105])
+      ([1105,1106]
+      (arguments<1106,1112> argument: (number[1106,1107]@{1}@) ,[1107,1108] 
(number[1111,1112]@{1}@))
+      )[1112,1113]))
+    ][1113,1114]))
+ ;[1114,1115] \n[1115,1116])
diff --git 
a/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_range.m
 
b/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_range.m
index 9089610fd4..04e858e1cf 100644
--- 
a/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_range.m
+++ 
b/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_range.m
@@ -1,4 +1,7 @@
 % -*- matlab-ts -*-
 
+% t-utils-test-indent: no-line-by-line-indent - when we type line-by-line, the 
continuation lines
+% have a syntax error because the continued portion isn't there.
+
 dataTbl = [dataTbl(:, 1:varColNumbers(1)-1)...
            tableWithDateColumnOnly dataTbl(:, varColNumbers(1) + 1 : end)];
diff --git 
a/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_range_expected.txt
 
b/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_range_expected.txt
index 0fdaf18404..241a5e5f74 100644
--- 
a/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_range_expected.txt
+++ 
b/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_range_expected.txt
@@ -1,35 +1,35 @@
 # -*- t-utils-ts-parse-tree -*-
-(source_file<1,145> (comment[1,20]@{% -*- matlab-ts -*-}@)
- (assignment<22,143> left: (identifier[22,29]@{dataTbl}@) =[30,31]
+(source_file<1,309> (comment[1,20]@{% -*- matlab-ts -*-}@) (comment[22,184]@{% 
t-utils-test-indent: no-line-by-line-indent - wh...}@)
+ (assignment<186,307> left: (identifier[186,193]@{dataTbl}@) =[194,195]
   right: 
-   (matrix<32,143> [[32,33]
-    (row<33,142>
-     (function_call<33,65> name: (identifier[33,40]@{dataTbl}@) ([40,41]
-      (arguments<41,64>
-       argument: (spread_operator<41,42> :[41,42])
-       ,[42,43]
-       (range<44,64> (number[44,45]@{1}@) :[45,46]
-        (binary_operator<46,64>
+   (matrix<196,307> [[196,197]
+    (row<197,306>
+     (function_call<197,229> name: (identifier[197,204]@{dataTbl}@) ([204,205]
+      (arguments<205,228>
+       argument: (spread_operator<205,206> :[205,206])
+       ,[206,207]
+       (range<208,228> (number[208,209]@{1}@) :[209,210]
+        (binary_operator<210,228>
          left: 
-          (function_call<46,62> name: (identifier[46,59]@{varColNumbers}@) 
([59,60]
-           (arguments<60,61> argument: (number[60,61]@{1}@))
-           )[61,62])
-         -[62,63] right: (number[63,64]@{1}@))))
-      )[64,65])
-     (line_continuation[65,80]@{...\n           }@) ,[80,80] 
(identifier[80,103]@{tableWithDateColumnOnly}@) ,[104,104]
-     (function_call<104,142> name: (identifier[104,111]@{dataTbl}@) ([111,112]
-      (arguments<112,141>
-       argument: (spread_operator<112,113> :[112,113])
-       ,[113,114]
-       (range<115,141>
-        (binary_operator<115,135>
+          (function_call<210,226> name: (identifier[210,223]@{varColNumbers}@) 
([223,224]
+           (arguments<224,225> argument: (number[224,225]@{1}@))
+           )[225,226])
+         -[226,227] right: (number[227,228]@{1}@))))
+      )[228,229])
+     (line_continuation[229,244]@{...\n           }@) ,[244,244] 
(identifier[244,267]@{tableWithDateColumnOnly}@) ,[268,268]
+     (function_call<268,306> name: (identifier[268,275]@{dataTbl}@) ([275,276]
+      (arguments<276,305>
+       argument: (spread_operator<276,277> :[276,277])
+       ,[277,278]
+       (range<279,305>
+        (binary_operator<279,299>
          left: 
-          (function_call<115,131> name: (identifier[115,128]@{varColNumbers}@) 
([128,129]
-           (arguments<129,130> argument: (number[129,130]@{1}@))
-           )[130,131])
-         +[132,133] right: (number[134,135]@{1}@))
-        :[136,137]
-        (end_keyword<138,141> end[138,141])))
-      )[141,142]))
-    ][142,143]))
- ;[143,144] \n[144,145])
+          (function_call<279,295> name: (identifier[279,292]@{varColNumbers}@) 
([292,293]
+           (arguments<293,294> argument: (number[293,294]@{1}@))
+           )[294,295])
+         +[296,297] right: (number[298,299]@{1}@))
+        :[300,301]
+        (end_keyword<302,305> end[302,305])))
+      )[305,306]))
+    ][306,307]))
+ ;[307,308] \n[308,309])

Reply via email to