branch: externals/matlab-mode
commit ac44f2835f13df4eaef6225c2294de3832094338
Author: John Ciolfi <[email protected]>
Commit: John Ciolfi <[email protected]>
matlab-ts-mode: indent blank line when adding args to fcn call
---
matlab-ts-mode.el | 9 ++
.../indent_xr_blank_line_in_fcn_call.m | 29 +++++
.../indent_xr_blank_line_in_fcn_call_expected.org | 117 +++++++++++++++++++++
3 files changed, 155 insertions(+)
diff --git a/matlab-ts-mode.el b/matlab-ts-mode.el
index 2ab2c27ae4..fca772051c 100644
--- a/matlab-ts-mode.el
+++ b/matlab-ts-mode.el
@@ -2714,6 +2714,15 @@ Example:
,#'matlab-ts-mode--i-prior-line-anchor
0)
+ ;; I-Rule: indent blank line when adding args to fcn call
+ ;; See:
tests/test-matlab-ts-mode-indent-xr-files/indent_xr_blank_line_in_fcn_call.m
+ ((and no-node
+ (parent-is ,(rx bos "function_call" eos)))
+ (lambda (_node parent _bol &rest _)
+ (let ((fcn-name (treesit-node-child-by-field-name parent "name")))
+ (treesit-node-start (treesit-node-next-sibling fcn-name))))
+ 1)
+
;; I-Rule: Assert if no rule matched and asserts are enabled.
,matlab-ts-mode--indent-assert-rule
))
diff --git
a/tests/test-matlab-ts-mode-indent-xr-files/indent_xr_blank_line_in_fcn_call.m
b/tests/test-matlab-ts-mode-indent-xr-files/indent_xr_blank_line_in_fcn_call.m
new file mode 100644
index 0000000000..11233e3451
--- /dev/null
+++
b/tests/test-matlab-ts-mode-indent-xr-files/indent_xr_blank_line_in_fcn_call.m
@@ -0,0 +1,29 @@
+% -*- matlab-ts -*-
+
+%{
+ Exercise inserting a blankline in an existing function call.
+
+ Case1:
+ (t-utils-xr
+
+ (re-search-forward "in2 \\.\\.\\.")
+ (re-search-backward " ")
+
+ (insert ",")
+ "C-e"
+
+ "C-m"
+ (insert "in3 ...")
+
+ (re-search-backward "^fun")
+ (t-utils-xr-print-code (point) (point-max))
+ )
+
+%}
+
+function indent_xr_blank_line_in_fcn_call(in1, in2, in3)
+ fprintf(1, '%s:%s:%s\n', ...
+ in1, ...
+ in2 ...
+ );
+end
diff --git
a/tests/test-matlab-ts-mode-indent-xr-files/indent_xr_blank_line_in_fcn_call_expected.org
b/tests/test-matlab-ts-mode-indent-xr-files/indent_xr_blank_line_in_fcn_call_expected.org
new file mode 100644
index 0000000000..9fffb8c194
--- /dev/null
+++
b/tests/test-matlab-ts-mode-indent-xr-files/indent_xr_blank_line_in_fcn_call_expected.org
@@ -0,0 +1,117 @@
+#+startup: showall
+
+* Executing commands from indent_xr_blank_line_in_fcn_call.m:7:2:
+
+ Case1: (t-utils-xr
+
+ (re-search-forward "in2 \\.\\.\\.")
+ (re-search-backward " ")
+
+ (insert ",")
+ "C-e"
+
+ "C-m"
+ (insert "in3 ...")
+
+ (re-search-backward "^fun")
+ (t-utils-xr-print-code (point) (point-max))
+ )
+
+- Invoking : (re-search-forward "in2 \\.\\.\\.")
+ Start point : 314
+ Moved to point: 450
+ : 27:19: in2 ...
+ : ^
+ No buffer modifications
+
+- Invoking : (re-search-backward " ")
+ Start point : 450
+ Moved to point: 446
+ : 27:15: in2 ...
+ : ^
+ No buffer modifications
+
+- Invoking : (insert ",")
+ Start point : 446
+ Moved to point: 447
+ : 27:16: in2, ...
+ : ^
+ Buffer modified:
+ #+begin_src diff
+--- start_contents
++++ end_contents
+@@ -24,6 +24,6 @@
+ function indent_xr_blank_line_in_fcn_call(in1, in2, in3)
+ fprintf(1, '%s:%s:%s\n', ...
+ in1, ...
+- in2 ...
++ in2, ...
+ );
+ end
+ #+end_src diff
+
+- Invoking : "C-e" = move-end-of-line
+ Start point : 447
+ Moved to point: 451
+ : 27:20: in2, ...
+ : ^
+ No buffer modifications
+
+- Invoking : "C-m" = newline
+ Start point : 451
+ Moved to point: 464
+ : 28:12:
+ : ^
+ Buffer modified:
+ #+begin_src diff
+--- start_contents
++++ end_contents
+@@ -25,5 +25,6 @@
+ fprintf(1, '%s:%s:%s\n', ...
+ in1, ...
+ in2, ...
++
+ );
+ end
+ #+end_src diff
+
+- Invoking : (insert "in3 ...")
+ Start point : 464
+ Moved to point: 471
+ : 28:19: in3 ...
+ : ^
+ Buffer modified:
+ #+begin_src diff
+--- start_contents
++++ end_contents
+@@ -25,6 +25,6 @@
+ fprintf(1, '%s:%s:%s\n', ...
+ in1, ...
+ in2, ...
+-
++ in3 ...
+ );
+ end
+ #+end_src diff
+
+- Invoking : (re-search-backward "^fun")
+ Start point : 471
+ Moved to point: 320
+ : 24:0: function indent_xr_blank_line_in_fcn_call(in1, in2, in3)
+ : ^
+ No buffer modifications
+
+- Invoking : (t-utils-xr-print-code (point) (point-max))
+ Start point : 320
+ No point movement
+ standard-output:
+ #+begin_src matlab-ts
+function indent_xr_blank_line_in_fcn_call(in1, in2, in3)
+ fprintf(1, '%s:%s:%s\\n', ...
+ in1, ...
+ in2, ...
+ in3 ...
+ );
+end
+ #+end_src
+ No buffer modifications