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

    matlab-ts-mode: speedup workaround issue 143, fix matrix align issue
---
 matlab-ts-mode--ei.el                              | 102 +++++++++----------
 matlab-ts-mode.el                                  | 108 ++++++++++-----------
 .../electric_indent_matrix_with_blank_line.m       |   5 +
 ...ectric_indent_matrix_with_blank_line_expected.m |   5 +
 ...c_indent_matrix_with_blank_line_expected_msgs.m |   5 +
 .../electric_indent_workaround_issue143.m          |   6 ++
 .../electric_indent_workaround_issue143_expected.m |   6 ++
 ...tric_indent_workaround_issue143_expected_msgs.m |   6 ++
 .../electric_indent_matrix_with_blank_line.m       |   5 +
 ...tric_indent_matrix_with_blank_line_expected.txt |   9 ++
 .../electric_indent_two_matrices.m                 |  14 +++
 .../electric_indent_two_matrices_expected.txt      |  36 +++++++
 .../electric_indent_workaround_issue143.m          |   6 ++
 ...lectric_indent_workaround_issue143_expected.txt |  16 ++-
 14 files changed, 224 insertions(+), 105 deletions(-)

diff --git a/matlab-ts-mode--ei.el b/matlab-ts-mode--ei.el
index a31d1e88f0..f6a32d6f9f 100644
--- a/matlab-ts-mode--ei.el
+++ b/matlab-ts-mode--ei.el
@@ -219,6 +219,20 @@
     (,(rx bos (or ")" "}") eos)       "."                                      
                  1)
     ))
 
+(defun matlab-ts-mode--ei-fast-back-to-indentation ()
+  "Fast back to indentation.
+The `back-to-indentation' function uses the syntax table causes
+slowdowns.  In MATLAB mode, the only whitespace characters we are
+concerned with are SPC and TAB.  Thus, we can be fast.  Returns t if
+there are non-whitespace characters on the line, nil otherwise."
+  (beginning-of-line)
+  (if (re-search-forward "[^ \t]" (line-end-position) t)
+      (progn
+        (backward-char)
+        t)
+    (end-of-line)
+    nil))
+
 (cl-defun matlab-ts-mode--ei-move-to-and-get-node ()
   "Move to and return node.
 Will return nil if no next node before end-of-line.
@@ -710,19 +724,18 @@ See `matlab-ts-mode--ei-get-new-line' for EI-INFO 
contents."
         (while (< (line-number-at-pos) end-linenum) ;; Adjust column widths
           (back-to-indentation)
           (let* ((row-node (matlab-ts-mode--ei-get-m-matrix-row-in-line))
-                 (indent-start-pt (point))
-                 ;; line content does not have leading indent-level spaces
-                 (content (buffer-substring indent-start-pt 
(line-end-position)))
                  (ei-line (buffer-substring (line-beginning-position) 
(line-end-position)))
+                 (indent-offset (string-match-p "[^ \t]+" ei-line)) ;; nil if 
at blank line in matrix
                  n-spaces)
-            (when row-node
+            (when (and row-node indent-offset)
               (let* ((col-num (length column-widths))
+                     (indent-start-pt (point))
+                     ;; line content does not have leading indent-level spaces
+                     (content (buffer-substring indent-start-pt 
(line-end-position)))
                      (pt-offset (nth 1 ei-info))
                      (matrix-offset (save-excursion
                                       (goto-char (treesit-node-start 
matrix-node))
-                                      (1+ (- (point) 
(line-beginning-position)))))
-                     (indent-offset (or (string-match-p "[^ \t]+" ei-line)
-                                        (error "Assert: no offset"))))
+                                      (1+ (- (point) 
(line-beginning-position))))))
 
                 (when (< matrix-offset indent-offset)
                   (when pt-offset
@@ -875,8 +888,7 @@ mat-info a (list matrix-node n-rows n-cols) if in a 
multi-line matrix."
     (when parent ;; In an assignment?
       (save-excursion
         (goto-char (treesit-node-start parent))
-        (beginning-of-line)
-        (back-to-indentation)
+        (matlab-ts-mode--ei-fast-back-to-indentation)
         (let ((first-node (treesit-node-at (point))))
           (matlab-ts-mode--ei-is-assign first-node 'multi-line-matrix))))))
 
@@ -1154,44 +1166,38 @@ start-node is the identifier node for width and 
start-offset is 2."
             (setq start-offset (- (point) (treesit-node-start node)))))))
     (cons start-node start-offset)))
 
-(defun matlab-ts-mode--ei-workaround-143 ()
-  "Workaround https://github.com/acristoffers/tree-sitter-matlab/issues/143.";
-
-  (let ((line-pt (point))
-        (eol-pt (line-end-position)))
-    (save-excursion
-      (back-to-indentation)
-
-      (while (< (point) eol-pt)
-        (let ((node (if (looking-at "[ \t]")
-                        (if (re-search-forward "[^ \t]" (line-end-position) t)
-                            (progn (backward-char)
-                                   (treesit-node-at (point)))
-                          (goto-char eol-pt)
-                          nil)
-                      (treesit-node-at (point)))))
-          (when node
-            (if (<= (treesit-node-end node) (point))
-                ;; Consider
-                ;;   a= [1, 2; 3, 44 ];
-                ;;           ^          ==> node at ';' returns the node for 2 
because
-                ;;                          ';' is an ignored node.
-                (forward-char)
-              (if (string= (or (treesit-node-type node) "") "number") ;; 
Something like 1234./2?
-                  (progn
-                    (goto-char (treesit-node-end node))
-                    (backward-char)
-                    ;; Note, .' (e.g. 1234.') is not parsed correctly and 
that's okay because
-                    ;; electric indent binds the transpose to the item to its 
left.
-                    (if (looking-at "\\.[/\\*\\\\]")
-                        (progn
-                          (when (<= (point) line-pt)
-                            (setq line-pt (1+ line-pt)))
-                          (insert " ")
-                          (setq eol-pt (line-end-position)))
-                      (forward-char)))
-                ;; Nodes can span multiple lines, so new point maybe > eol-pt.
-                (goto-char (treesit-node-end node))))))))
+(defun matlab-ts-mode--ei-workaround-143 (beg end &optional line-pt)
+  "Workaround https://github.com/acristoffers/tree-sitter-matlab/issues/143.
+Between BEG and END points, insert a space between numbers and dot
+operators.  For example,
+
+  123./  =>  123 ./
+  123.*  =>  123 .*
+  123.\\  =>  123 .\\
+
+When optional LINE-PT point is specified, it must be between BEG and END
+inclusive and the adjusted LINE-PT will be adjusted to stay on the same
+semantic element.  For example if BEG and END are the line beginning and
+end positions of the following assignment line, LINE-PT is adjusted as
+shown.
+
+      x = 123./1 + 567
+                   ^         <= LINE-PT
+TAB>  x = 123 ./1 + 567
+                    ^        <= LINE-PT adjusted to here"
+  (save-excursion
+    (goto-char beg)
+    (while (re-search-forward "[0-9]\\.[/\\*\\\\]" end t)
+      (backward-char 2) ;; on the "."
+      (let ((node (treesit-node-at (point))))
+        (when (equal (treesit-node-type node) "number")
+          (when (and line-pt
+                     (<= (point) line-pt))
+            (setq line-pt (1+ line-pt)))
+          (insert " ")
+          (setq end (1+ end))))
+      (forward-char 2)))
+  (when line-pt
     (goto-char line-pt)))
 
 (cl-defun matlab-ts-mode--ei-indent-elements-in-line (&optional 
is-indent-region)
@@ -1199,8 +1205,6 @@ start-node is the identifier node for width and 
start-offset is 2."
 When IS-INDENT-REGION is nil, we restore the point to it's logical
 location when the line is updated.  Returns t if line was updated."
 
-  (matlab-ts-mode--ei-workaround-143)
-
   ;; If line was indented (nth 0 ei-info) is not same as current line, then 
update the buffer
   (let* ((start-pair (when (not is-indent-region)
                        (matlab-ts-mode--ei-get-start-info)))
diff --git a/matlab-ts-mode.el b/matlab-ts-mode.el
index 83181f645c..4d66055736 100644
--- a/matlab-ts-mode.el
+++ b/matlab-ts-mode.el
@@ -2878,69 +2878,69 @@ Example:
 
 (defun matlab-ts-mode--treesit-indent ()
   "Call `treesit-indent', then do electric indent."
-  (treesit-indent)
+  (treesit-indent) ;; treesit-indent before electric indent to get updated 
point on the line
   (when matlab-ts-mode-electric-indent
     (let ((at-eol (looking-at "[ \t]*$")))
-      (when (matlab-ts-mode--ei-indent-elements-in-line)
-        (when at-eol
-          (end-of-line))))))
+      (matlab-ts-mode--ei-workaround-143 (line-beginning-position) 
(line-end-position) (point))
+      (when (and (matlab-ts-mode--ei-indent-elements-in-line)
+                 at-eol)
+        (end-of-line)))))
 
 (defun matlab-ts-mode--treesit-indent-region (beg end)
   "Call `treesit-indent-region' on BEG END, then do electric indent."
   ;; `treesit-indent-region' will not alter the number of lines, but it may 
reduce the buffer size,
   ;; thus grab the start/end lines for 
`matlab-ts-mode--ei-indent-elements-in-line'.
-  (if matlab-ts-mode-electric-indent
-      (let* ((start-linenum (line-number-at-pos beg))
-             (curr-linenum start-linenum)
-             (end-linenum (save-excursion
-                            (goto-char end)
-                            (let ((linenum (line-number-at-pos)))
-                              (when (= (point) (line-beginning-position))
-                                (setq linenum (1- linenum)))
-                              linenum))))
-
-        ;; We need to run electric indent before treesit-indent-region. 
Consider
-        ;;    l2 = @(x)((ischar(x) || isstring(x) || isnumeric(x)) && ...
-        ;;                 ~strcmpi(x, 'fubar'));
-        ;; If we indent-region first, we'll get
-        ;;    l2 = @(x)((ischar(x) || isstring(x) || isnumeric(x)) && ...
-        ;;              ~strcmpi(x, 'fubar'));
-        ;; then when we adjust spacing, we'll have the following where the 2nd 
line is not
-        ;; indented correctly.
-        ;;    l2 = @(x) ((ischar(x) || isstring(x) || isnumeric(x)) && ...
-        ;;              ~strcmpi(x, 'fubar'));
-        (unwind-protect
-            (progn
-              ;; Add invalid entry to matlab-ts-mode--ei-align-assign-alist as 
a marker to activate
-              ;; caching of computed offsets for assignment alignment.
-              (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 . "")))
-              (save-excursion
-                (goto-char beg)
-                (while (<= curr-linenum end-linenum)
-                  (beginning-of-line)
-                  (matlab-ts-mode--ei-indent-elements-in-line 'indent-region)
-                  (forward-line)
-                  (setq curr-linenum (1+ curr-linenum)))
-                ;; Restore point accounting for whitespace adjustments in the 
lines
-                (goto-char (point-min))
-                (forward-line (1- start-linenum))
-                (setq beg (point))
-                (goto-char (point-min))
-                (forward-line end-linenum)
-                (setq end (point)))
-
-              (treesit-indent-region beg end))
+  (when matlab-ts-mode-electric-indent
+    (let* ((start-linenum (line-number-at-pos beg))
+           (curr-linenum start-linenum)
+           (end-linenum (save-excursion
+                          (goto-char end)
+                          (let ((linenum (line-number-at-pos)))
+                            (when (= (point) (line-beginning-position))
+                              (setq linenum (1- linenum)))
+                            linenum))))
+
+      (matlab-ts-mode--ei-workaround-143 beg end)
+
+      ;; We need to run electric indent before treesit-indent-region. Consider
+      ;;    l2 = @(x)((ischar(x) || isstring(x) || isnumeric(x)) && ...
+      ;;                 ~strcmpi(x, 'fubar'));
+      ;; If we indent-region first, we'll get
+      ;;    l2 = @(x)((ischar(x) || isstring(x) || isnumeric(x)) && ...
+      ;;              ~strcmpi(x, 'fubar'));
+      ;; then when we adjust spacing, we'll have the following where the 2nd 
line is not
+      ;; indented correctly.
+      ;;    l2 = @(x) ((ischar(x) || isstring(x) || isnumeric(x)) && ...
+      ;;              ~strcmpi(x, 'fubar'));
+      (unwind-protect
           (progn
-            (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))))
+            ;; Add invalid entry to matlab-ts-mode--ei-align-assign-alist as a 
marker to activate
+            ;; caching of computed offsets for assignment alignment.
+            (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 . "")))
 
-    ;; else indent without electric additions
-    (treesit-indent-region beg end)))
+            (save-excursion
+              (goto-char beg)
+              (while (<= curr-linenum end-linenum)
+                (beginning-of-line)
+                (matlab-ts-mode--ei-indent-elements-in-line 'indent-region)
+                (forward-line)
+                (setq curr-linenum (1+ curr-linenum)))
+              ;; Restore point accounting for whitespace adjustments in the 
lines
+              (goto-char (point-min))
+              (forward-line (1- start-linenum))
+              (setq beg (point))
+              (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))))
+
+  (treesit-indent-region beg end))
 
 ;;; Thing settings for movement, etc.
 
diff --git 
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_matrix_with_blank_line.m
 
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_matrix_with_blank_line.m
new file mode 100644
index 0000000000..698e75e69b
--- /dev/null
+++ 
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_matrix_with_blank_line.m
@@ -0,0 +1,5 @@
+% -*- matlab-ts -*-
+
+m = [   123 23333
+
+   333 4];
diff --git 
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_matrix_with_blank_line_expected.m
 
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_matrix_with_blank_line_expected.m
new file mode 100644
index 0000000000..a5b4abe853
--- /dev/null
+++ 
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_matrix_with_blank_line_expected.m
@@ -0,0 +1,5 @@
+% -*- matlab-ts -*-
+
+m = [123 23333
+
+     333     4];
diff --git 
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_matrix_with_blank_line_expected_msgs.m
 
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_matrix_with_blank_line_expected_msgs.m
new file mode 100644
index 0000000000..69ab4b66c6
--- /dev/null
+++ 
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_matrix_with_blank_line_expected_msgs.m
@@ -0,0 +1,5 @@
+% -*- matlab-ts -*- %  <{Matched rule: (matlab-ts-mode--i-top-level 
matlab-ts-mode--column-0 0)}>
+
+m = [123 23333 %  <{Matched rule: (matlab-ts-mode--i-top-level 
matlab-ts-mode--column-0 0)}>
+
+     333     4]; %  <{Matched rule: (matlab-ts-mode--i-row-matcher 
matlab-ts-mode--i-row-matcher-anchor matlab-ts-mode--i-row-matcher-offset)}>
diff --git 
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_workaround_issue143.m
 
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_workaround_issue143.m
index 411af10c5c..f37f645c5c 100644
--- 
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_workaround_issue143.m
+++ 
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_workaround_issue143.m
@@ -5,3 +5,9 @@
 if 1
                a=1234./2+500./4+600.'+700.\1+800.*2+sum([444.,555.]);   
 end
+
+x = 123.* 4 + 567
+
+% x = 123.*4 + 567
+
+y = 123.*4 + 567
diff --git 
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_workaround_issue143_expected.m
 
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_workaround_issue143_expected.m
index 676d722d5f..11925cf998 100644
--- 
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_workaround_issue143_expected.m
+++ 
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_workaround_issue143_expected.m
@@ -5,3 +5,9 @@
 if 1
     a = 1234 ./ 2 + 500 ./ 4 + 600.' + 700 .\ 1 + 800 .* 2 + sum([444., 555.]);
 end
+
+x = 123 .* 4 + 567
+
+% x = 123.*4 + 567
+
+y = 123 .* 4 + 567
diff --git 
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_workaround_issue143_expected_msgs.m
 
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_workaround_issue143_expected_msgs.m
index 5d3e8d8e68..a101cf8a89 100644
--- 
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_workaround_issue143_expected_msgs.m
+++ 
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_workaround_issue143_expected_msgs.m
@@ -5,3 +5,9 @@
 if 1 %  <{Matched rule: (matlab-ts-mode--i-top-level matlab-ts-mode--column-0 
0)}>
     a = 1234 ./ 2 + 500 ./ 4 + 600.' + 700 .\ 1 + 800 .* 2 + sum([444., 
555.]); %  <{Matched rule: ((node-is 
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
 parent 4)}>
 end %  <{Matched rule: ((node-is 
"\\`\\(?:catch_clause\\|e\\(?:lse\\(?:\\(?:if\\)?_clause\\)\\|nd\\)\\)\\'") 
parent 0)}>
+
+x = 123 .* 4 + 567 %  <{Matched rule: (matlab-ts-mode--i-top-level 
matlab-ts-mode--column-0 0)}>
+
+% x = 123.*4 + 567 %  <{Matched rule: (matlab-ts-mode--i-top-level 
matlab-ts-mode--column-0 0)}>
+
+y = 123 .* 4 + 567 %  <{Matched rule: (matlab-ts-mode--i-top-level 
matlab-ts-mode--column-0 0)}>
diff --git 
a/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_matrix_with_blank_line.m
 
b/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_matrix_with_blank_line.m
new file mode 100644
index 0000000000..698e75e69b
--- /dev/null
+++ 
b/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_matrix_with_blank_line.m
@@ -0,0 +1,5 @@
+% -*- matlab-ts -*-
+
+m = [   123 23333
+
+   333 4];
diff --git 
a/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_matrix_with_blank_line_expected.txt
 
b/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_matrix_with_blank_line_expected.txt
new file mode 100644
index 0000000000..fba2bac92d
--- /dev/null
+++ 
b/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_matrix_with_blank_line_expected.txt
@@ -0,0 +1,9 @@
+# -*- t-utils-ts-parse-tree -*-
+(source_file<1,52> (comment[1,20]@{% -*- matlab-ts -*-}@)
+ (assignment<22,50> left: (identifier[22,23]@{m}@) =[24,25]
+  right: 
+   (matrix<26,50> [[26,27]
+    (row<30,39> (number[30,33]@{123}@) ,[34,34] (number[34,39]@{23333}@))
+    (row<44,49> (number[44,47]@{333}@) ,[48,48] (number[48,49]@{4}@))
+    ][49,50]))
+ ;[50,51] \n[51,52])
diff --git 
a/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_two_matrices.m
 
b/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_two_matrices.m
new file mode 100644
index 0000000000..97bdfae5a9
--- /dev/null
+++ 
b/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_two_matrices.m
@@ -0,0 +1,14 @@
+% -*- matlab-ts -*-
+
+% t-utils-test-indent: no-line-by-line-indent - when typing matrix 
line-by-line, there are
+% error nodes and thus the matrix alignment doesn't occur
+
+% The following two matrices do not have blank lines between them. This 
validates that
+% the indent-region of the matrix in the temporary buffer doesn't pickup 
invalid content.
+
+if 1
+        tp_taper_BorderVertices = [neg_BorderVertices;...
+        topcover_taper_Face_BV];
+    tp_taper_Polygons = [neg_Polygons;...
+        topcover_taper_Face_poly{1} + max(max(neg_Polygons))];
+end
diff --git 
a/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_two_matrices_expected.txt
 
b/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_two_matrices_expected.txt
new file mode 100644
index 0000000000..0ed8d57ae8
--- /dev/null
+++ 
b/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_two_matrices_expected.txt
@@ -0,0 +1,36 @@
+# -*- t-utils-ts-parse-tree -*-
+(source_file<1,555> (comment[1,20]@{% -*- matlab-ts -*-}@) (comment[22,170]@{% 
t-utils-test-indent: no-line-by-line-indent - wh...}@) (comment[172,348]@{% The 
following two matrices do not have blank lin...}@) \n[348,350]
+ (if_statement<350,554> if[350,352] condition: (number[353,354]@{1}@)
+  (block<363,551>
+   (assignment<363,444> left: (identifier[363,386]@{tp_taper_BorderVertices}@) 
=[387,388]
+    right: 
+     (matrix<389,444> [[389,390]
+      (row<390,408> (identifier[390,408]@{neg_BorderVertices}@))
+      (line_continuation[409,413]@{...\n}@)
+      (row<421,443> (identifier[421,443]@{topcover_taper_Face_BV}@))
+      ][443,444]))
+   ;[444,445]
+   (assignment<450,549> left: (identifier[450,467]@{tp_taper_Polygons}@) 
=[468,469]
+    right: 
+     (matrix<470,549> [[470,471]
+      (row<471,483> (identifier[471,483]@{neg_Polygons}@))
+      (line_continuation[484,488]@{...\n}@)
+      (row<496,548>
+       (binary_operator<496,548>
+        left: 
+         (function_call<496,523> name: 
(identifier[496,520]@{topcover_taper_Face_poly}@) {[520,521]
+          (arguments<521,522> argument: (number[521,522]@{1}@))
+          }[522,523])
+        +[524,525]
+        right: 
+         (function_call<526,548> name: (identifier[526,529]@{max}@) ([529,530]
+          (arguments<530,547>
+           argument: 
+            (function_call<530,547> name: (identifier[530,533]@{max}@) 
([533,534]
+             (arguments<534,546> argument: 
(identifier[534,546]@{neg_Polygons}@))
+             )[546,547]))
+          )[547,548])))
+      ][548,549]))
+   ;[549,550] \n[550,551])
+  end[551,554])
+ \n[554,555])
diff --git 
a/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_workaround_issue143.m
 
b/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_workaround_issue143.m
index 411af10c5c..f37f645c5c 100644
--- 
a/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_workaround_issue143.m
+++ 
b/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_workaround_issue143.m
@@ -5,3 +5,9 @@
 if 1
                a=1234./2+500./4+600.'+700.\1+800.*2+sum([444.,555.]);   
 end
+
+x = 123.* 4 + 567
+
+% x = 123.*4 + 567
+
+y = 123.*4 + 567
diff --git 
a/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_workaround_issue143_expected.txt
 
b/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_workaround_issue143_expected.txt
index bc12c512a4..a6c6070da8 100644
--- 
a/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_workaround_issue143_expected.txt
+++ 
b/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_workaround_issue143_expected.txt
@@ -1,5 +1,5 @@
 # -*- t-utils-ts-parse-tree -*-
-(source_file<1,180> (comment[1,20]@{% -*- matlab-ts -*-}@) (comment[22,96]@{% 
workaround https://github.com/acristoffers/tree-...}@) \n[96,98]
+(source_file<1,237> (comment[1,20]@{% -*- matlab-ts -*-}@) (comment[22,96]@{% 
workaround https://github.com/acristoffers/tree-...}@) \n[96,98]
  (if_statement<98,179> if[98,100] condition: (number[101,102]@{1}@)
   (block<118,176>
    (assignment<118,171> left: (identifier[118,119]@{a}@) =[119,120]
@@ -33,4 +33,16 @@
         )[170,171])))
    ;[171,172] \n[175,176])
   end[176,179])
- \n[179,180])
+ \n[179,181]
+ (assignment<181,198> left: (identifier[181,182]@{x}@) =[183,184]
+  right: 
+   (binary_operator<185,198>
+    left: (binary_operator<185,192> left: (number[185,189]@{123.}@) *[189,190] 
right: (number[191,192]@{4}@))
+    +[193,194] right: (number[195,198]@{567}@)))
+ (comment[200,218]@{% x = 123.*4 + 567}@) \n[218,220]
+ (assignment<220,236> left: (identifier[220,221]@{y}@) =[222,223]
+  right: 
+   (binary_operator<224,236>
+    left: (binary_operator<224,230> left: (number[224,228]@{123.}@) *[228,229] 
right: (number[229,230]@{4}@))
+    +[231,232] right: (number[233,236]@{567}@)))
+ \n[236,237])

Reply via email to