aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry Gutov2023-01-17 23:46:41 +0200
committerDmitry Gutov2023-01-18 03:27:37 +0200
commit9ed9ff4690a8b26ac9729a66aa22f2e14856cd0c (patch)
treee22f6db47e121596c62e20ee7cb568661b498f20
parentc4f0b6ccea128d52a7b4a9ddc1e81dcf13bb25ea (diff)
downloademacs-9ed9ff4690a8b26ac9729a66aa22f2e14856cd0c.tar.gz
emacs-9ed9ff4690a8b26ac9729a66aa22f2e14856cd0c.zip
ruby-ts-mode: Fix the rules for hanging arrays and hashes
* lisp/progmodes/ruby-ts-mode.el (ruby-ts--indent-rules): Fix the rules for hanging arrays and hashes (to line up to parent-bol instead of the opening brace). * test/lisp/progmodes/ruby-mode-resources/ruby-ts.rb: New file with examples. * test/lisp/progmodes/ruby-ts-mode-tests.el: Use it here.
-rw-r--r--lisp/progmodes/ruby-ts-mode.el18
-rw-r--r--test/lisp/progmodes/ruby-mode-resources/ruby-ts.rb23
-rw-r--r--test/lisp/progmodes/ruby-ts-mode-tests.el1
3 files changed, 28 insertions, 14 deletions
diff --git a/lisp/progmodes/ruby-ts-mode.el b/lisp/progmodes/ruby-ts-mode.el
index 939c054b041..19b766ceadb 100644
--- a/lisp/progmodes/ruby-ts-mode.el
+++ b/lisp/progmodes/ruby-ts-mode.el
@@ -749,20 +749,10 @@ i.e. expr of def foo(args) = expr is returned."
749 (not ruby-ts--same-line-hash-array-p)) 749 (not ruby-ts--same-line-hash-array-p))
750 grand-parent ruby-indent-level) 750 grand-parent ruby-indent-level)
751 751
752 ((n-p-gp "}" "hash" "assignment") (ruby-ts--bol ruby-ts--grand-parent-node) 0) 752 ((match "}" "hash") parent-bol 0)
753 ((n-p-gp nil "hash" "assignment") (ruby-ts--bol ruby-ts--grand-parent-node) ruby-indent-level) 753 ((parent-is "hash") parent-bol ruby-indent-level)
754 ((n-p-gp "]" "array" "assignment") (ruby-ts--bol ruby-ts--grand-parent-node) 0) 754 ((match "]" "array") parent-bol 0)
755 ((n-p-gp nil "array" "assignment") (ruby-ts--bol ruby-ts--grand-parent-node) ruby-indent-level) 755 ((parent-is "array") parent-bol ruby-indent-level)
756
757 ((n-p-gp "}" "hash" "argument_list") first-sibling 0)
758 ((n-p-gp nil "hash" "argument_list") first-sibling ruby-indent-level)
759 ((n-p-gp "]" "array" "argument_list") first-sibling 0)
760 ((n-p-gp nil "array" "argument_list") first-sibling ruby-indent-level)
761
762 ((match "}" "hash") first-sibling 0)
763 ((parent-is "hash") first-sibling ruby-indent-level)
764 ((match "]" "array") first-sibling 0)
765 ((parent-is "array") first-sibling ruby-indent-level)
766 756
767 ;; If the previous method isn't finished yet, this will get 757 ;; If the previous method isn't finished yet, this will get
768 ;; the next method indented properly. 758 ;; the next method indented properly.
diff --git a/test/lisp/progmodes/ruby-mode-resources/ruby-ts.rb b/test/lisp/progmodes/ruby-mode-resources/ruby-ts.rb
new file mode 100644
index 00000000000..6b4107ef97b
--- /dev/null
+++ b/test/lisp/progmodes/ruby-mode-resources/ruby-ts.rb
@@ -0,0 +1,23 @@
1variable = foo(
2 [
3 qwe
4 ], [
5 rty
6 ], {
7 a: 3
8 }
9)
10
11tee = [
12 qwe
13]
14
15qux = [1,
16 2]
17
18att = {a: 1,
19 b: 2}
20
21# Local Variables:
22# mode: ruby-ts
23# End:
diff --git a/test/lisp/progmodes/ruby-ts-mode-tests.el b/test/lisp/progmodes/ruby-ts-mode-tests.el
index eaf6367a306..d7b6258385b 100644
--- a/test/lisp/progmodes/ruby-ts-mode-tests.el
+++ b/test/lisp/progmodes/ruby-ts-mode-tests.el
@@ -250,6 +250,7 @@ The whitespace before and including \"|\" on each line is removed."
250 (should (equal (buffer-string) orig)))) 250 (should (equal (buffer-string) orig))))
251 (kill-buffer buf))))) 251 (kill-buffer buf)))))
252 252
253(ruby-ts-deftest-indent "ruby-ts.rb")
253(ruby-ts-deftest-indent "ruby-method-params-indent.rb") 254(ruby-ts-deftest-indent "ruby-method-params-indent.rb")
254(ruby-ts-deftest-indent "ruby-block-indent.rb") 255(ruby-ts-deftest-indent "ruby-block-indent.rb")
255 256