diff options
| author | Dmitry Gutov | 2023-01-17 23:46:41 +0200 |
|---|---|---|
| committer | Dmitry Gutov | 2023-01-18 03:27:37 +0200 |
| commit | 9ed9ff4690a8b26ac9729a66aa22f2e14856cd0c (patch) | |
| tree | e22f6db47e121596c62e20ee7cb568661b498f20 | |
| parent | c4f0b6ccea128d52a7b4a9ddc1e81dcf13bb25ea (diff) | |
| download | emacs-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.el | 18 | ||||
| -rw-r--r-- | test/lisp/progmodes/ruby-mode-resources/ruby-ts.rb | 23 | ||||
| -rw-r--r-- | test/lisp/progmodes/ruby-ts-mode-tests.el | 1 |
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 @@ | |||
| 1 | variable = foo( | ||
| 2 | [ | ||
| 3 | qwe | ||
| 4 | ], [ | ||
| 5 | rty | ||
| 6 | ], { | ||
| 7 | a: 3 | ||
| 8 | } | ||
| 9 | ) | ||
| 10 | |||
| 11 | tee = [ | ||
| 12 | qwe | ||
| 13 | ] | ||
| 14 | |||
| 15 | qux = [1, | ||
| 16 | 2] | ||
| 17 | |||
| 18 | att = {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 | ||