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