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

    matlab-ts-mode: adjust point for electric indent property alignment
---
 matlab-ts-mode--ei.el                              | 13 ++--
 .../electric_indent_xr_prop_pt.m                   | 12 ++++
 .../electric_indent_xr_prop_pt_expected.org        | 77 ++++++++++++++++++++++
 3 files changed, 98 insertions(+), 4 deletions(-)

diff --git a/matlab-ts-mode--ei.el b/matlab-ts-mode--ei.el
index 4e2640783e..f75089885a 100644
--- a/matlab-ts-mode--ei.el
+++ b/matlab-ts-mode--ei.el
@@ -989,10 +989,15 @@ See `matlab-ts-mode--ei-get-new-line' for EI-INFO 
contents."
                (p-end (when (string-match "\\([^ \t]+\\)[ \t]+[^ \t;]" ei-line)
                         (match-end 1))))
           (when p-end
-            (setq ei-line (concat (substring ei-line 0 p-end)
-                                  (make-string diff ? )
-                                  (substring ei-line p-end)))
-            (setq ei-info (cons ei-line (cdr ei-info))))))))
+            (let ((new-pt-offset (let ((pt-offset (nth 1 ei-info)))
+                                   (when pt-offset
+                                     (if (<= p-end pt-offset)
+                                         (+ pt-offset diff)
+                                       pt-offset)))))
+              (setq ei-line (concat (substring ei-line 0 p-end)
+                                    (make-string diff ? )
+                                    (substring ei-line p-end)))
+              (setq ei-info (list ei-line new-pt-offset (nth 2 ei-info) (nth 3 
ei-info)))))))))
   ei-info)
 
 (defun matlab-ts-mode--ei-trailing-comment-offset (ei-info)
diff --git 
a/tests/test-matlab-ts-mode-electric-indent-xr-files/electric_indent_xr_prop_pt.m
 
b/tests/test-matlab-ts-mode-electric-indent-xr-files/electric_indent_xr_prop_pt.m
new file mode 100644
index 0000000000..7f8546e757
--- /dev/null
+++ 
b/tests/test-matlab-ts-mode-electric-indent-xr-files/electric_indent_xr_prop_pt.m
@@ -0,0 +1,12 @@
+% -*- matlab-ts -*-
+
+classdef electric_indent_xr_prop_pt
+    % case1: (t-utils-xr (re-search-forward "p1") "C-i")
+    properties
+        p1(1,3)
+           param2                (2,1)
+        x{mustBeReal}
+    end
+    % case2: (t-utils-xr "C-a" (re-search-backward "param2") "C-a" "C-i")
+end
+
diff --git 
a/tests/test-matlab-ts-mode-electric-indent-xr-files/electric_indent_xr_prop_pt_expected.org
 
b/tests/test-matlab-ts-mode-electric-indent-xr-files/electric_indent_xr_prop_pt_expected.org
new file mode 100644
index 0000000000..d48968c35f
--- /dev/null
+++ 
b/tests/test-matlab-ts-mode-electric-indent-xr-files/electric_indent_xr_prop_pt_expected.org
@@ -0,0 +1,77 @@
+#+startup: showall
+
+* Executing commands from electric_indent_xr_prop_pt.m:4:13:
+
+  case1: (t-utils-xr (re-search-forward "p1") "C-i")
+
+- Invoking      : (re-search-forward "p1")
+  Start point   :  114
+  Moved to point:  140
+  : 6:10:         p1(1,3)
+  :                 ^
+  No buffer modifications
+
+- Invoking      : "C-i" = indent-for-tab-command
+  Start point   :  140
+  Moved to point:  145
+  : 6:15:         p1     (1,3)
+  :                      ^
+  Buffer modified:
+  #+begin_src diff
+--- start_contents
++++ end_contents
+@@ -3,7 +3,7 @@
+ classdef electric_indent_xr_prop_pt
+     % case1: (t-utils-xr (re-search-forward "p1") "C-i")
+     properties
+-        p1(1,3)
++        p1     (1,3)
+            param2                (2,1)
+         x{mustBeReal}
+     end
+  #+end_src diff
+
+* Executing commands from electric_indent_xr_prop_pt.m:10:13:
+
+  case2: (t-utils-xr "C-a" (re-search-backward "param2") "C-a" "C-i")
+
+- Invoking      : "C-a" = move-beginning-of-line
+  Start point   :  293
+  Moved to point:  220
+  : 10:0:     % case2: (t-utils-xr "C-a" (re-search-backward "param2") "C-a" 
"C-i")
+  :       ^
+  No buffer modifications
+
+- Invoking      : (re-search-backward "param2")
+  Start point   :  220
+  Moved to point:  162
+  : 7:11:            param2                (2,1)
+  :                  ^
+  No buffer modifications
+
+- Invoking      : "C-a" = move-beginning-of-line
+  Start point   :  162
+  Moved to point:  151
+  : 7:0:            param2                (2,1)
+  :      ^
+  No buffer modifications
+
+- Invoking      : "C-i" = indent-for-tab-command
+  Start point   :  151
+  Moved to point:  159
+  : 7:8:         param2 (2,1)
+  :              ^
+  Buffer modified:
+  #+begin_src diff
+--- start_contents
++++ end_contents
+@@ -4,7 +4,7 @@
+     % case1: (t-utils-xr (re-search-forward "p1") "C-i")
+     properties
+         p1     (1,3)
+-           param2                (2,1)
++        param2 (2,1)
+         x{mustBeReal}
+     end
+     % case2: (t-utils-xr "C-a" (re-search-backward "param2") "C-a" "C-i")
+  #+end_src diff

Reply via email to