aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry Gutov2023-01-18 03:21:32 +0200
committerDmitry Gutov2023-01-18 03:27:37 +0200
commit343b9b3dfe370a7e65d499b499621f87e722ea71 (patch)
tree657687ecf5325b183b39e305a65d6bb2c4e4eb70
parent045404d1aac1a9bd4ad2a3af8db577d7f05b9d03 (diff)
downloademacs-343b9b3dfe370a7e65d499b499621f87e722ea71.tar.gz
emacs-343b9b3dfe370a7e65d499b499621f87e722ea71.zip
ruby-ts-mode: Obey the option ruby-method-call-indent
* lisp/progmodes/ruby-ts-mode.el (ruby-ts--method-call-indent-p): New function. (ruby-ts--indent-rules): Use it. * test/lisp/progmodes/ruby-ts-mode-tests.el: Run indent test for ruby-method-call-indent.rb. * test/lisp/progmodes/ruby-mode-resources/ruby-ts.rb: Add explicit value for ruby-method-call-indent.
-rw-r--r--lisp/progmodes/ruby-ts-mode.el10
-rw-r--r--test/lisp/progmodes/ruby-mode-resources/ruby-ts.rb1
-rw-r--r--test/lisp/progmodes/ruby-ts-mode-tests.el1
3 files changed, 12 insertions, 0 deletions
diff --git a/lisp/progmodes/ruby-ts-mode.el b/lisp/progmodes/ruby-ts-mode.el
index 7e30ece1fd7..27e5d002881 100644
--- a/lisp/progmodes/ruby-ts-mode.el
+++ b/lisp/progmodes/ruby-ts-mode.el
@@ -640,6 +640,13 @@ a statement container is a node that matches
640 ;; else the second query aligns 640 ;; else the second query aligns
641 ;; `ruby-indent-level' spaces in from the parent. 641 ;; `ruby-indent-level' spaces in from the parent.
642 ((and ruby-ts--align-chain-p (match "\\." "call")) ruby-ts--align-chain 0) 642 ((and ruby-ts--align-chain-p (match "\\." "call")) ruby-ts--align-chain 0)
643 ;; Obery ruby-method-call-indent, whether the dot is on
644 ;; this line or the previous line.
645 ((and (not ruby-ts--method-call-indent-p)
646 (or
647 (match "\\." "call")
648 (query "(call \".\" (identifier) @indent)")))
649 parent 0)
643 ((match "\\." "call") parent ruby-indent-level) 650 ((match "\\." "call") parent ruby-indent-level)
644 651
645 ;; ruby-indent-after-block-in-continued-expression 652 ;; ruby-indent-after-block-in-continued-expression
@@ -797,6 +804,9 @@ a statement container is a node that matches
797(defun ruby-ts--after-op-indent-p (&rest _) 804(defun ruby-ts--after-op-indent-p (&rest _)
798 ruby-after-operator-indent) 805 ruby-after-operator-indent)
799 806
807(defun ruby-ts--method-call-indent-p (&rest _)
808 ruby-method-call-indent)
809
800(defun ruby-ts--class-or-module-p (node) 810(defun ruby-ts--class-or-module-p (node)
801 "Predicate if NODE is a class or module." 811 "Predicate if NODE is a class or module."
802 (string-match-p ruby-ts--class-or-module-regex (treesit-node-type node))) 812 (string-match-p ruby-ts--class-or-module-regex (treesit-node-type node)))
diff --git a/test/lisp/progmodes/ruby-mode-resources/ruby-ts.rb b/test/lisp/progmodes/ruby-mode-resources/ruby-ts.rb
index be98465881f..9959de4fe71 100644
--- a/test/lisp/progmodes/ruby-mode-resources/ruby-ts.rb
+++ b/test/lisp/progmodes/ruby-mode-resources/ruby-ts.rb
@@ -58,5 +58,6 @@ qux = foo.fee ?
58# mode: ruby-ts 58# mode: ruby-ts
59# ruby-after-operator-indent: t 59# ruby-after-operator-indent: t
60# ruby-block-indent: t 60# ruby-block-indent: t
61# ruby-method-call-indent: t
61# ruby-method-params-indent: t 62# ruby-method-params-indent: t
62# End: 63# End:
diff --git a/test/lisp/progmodes/ruby-ts-mode-tests.el b/test/lisp/progmodes/ruby-ts-mode-tests.el
index 1d686a2ac53..1d2cfbfb901 100644
--- a/test/lisp/progmodes/ruby-ts-mode-tests.el
+++ b/test/lisp/progmodes/ruby-ts-mode-tests.el
@@ -253,6 +253,7 @@ The whitespace before and including \"|\" on each line is removed."
253(ruby-ts-deftest-indent "ruby-ts.rb") 253(ruby-ts-deftest-indent "ruby-ts.rb")
254(ruby-ts-deftest-indent "ruby-after-operator-indent.rb") 254(ruby-ts-deftest-indent "ruby-after-operator-indent.rb")
255(ruby-ts-deftest-indent "ruby-block-indent.rb") 255(ruby-ts-deftest-indent "ruby-block-indent.rb")
256(ruby-ts-deftest-indent "ruby-method-call-indent.rb")
256(ruby-ts-deftest-indent "ruby-method-params-indent.rb") 257(ruby-ts-deftest-indent "ruby-method-params-indent.rb")
257 258
258(provide 'ruby-ts-mode-tests) 259(provide 'ruby-ts-mode-tests)