diff options
| author | Aaron Jensen | 2024-08-31 19:31:20 -0400 |
|---|---|---|
| committer | Dmitry Gutov | 2024-09-02 21:55:16 +0300 |
| commit | 6c15b7710d4bfc201afbafd2daec74c2baec9102 (patch) | |
| tree | a448892b0db91c01bf9e7c058cea4761de1b55cc | |
| parent | 7799ef43354d756d7144cab3437f38496199522c (diff) | |
| download | emacs-6c15b7710d4bfc201afbafd2daec74c2baec9102.tar.gz emacs-6c15b7710d4bfc201afbafd2daec74c2baec9102.zip | |
Add new option ruby-bracketed-args-indent
* lisp/progmodes/ruby-mode.el (ruby-bracketed-args-indent): New option.
(ruby-smie-rules): Use it (bug#60321).
* test/lisp/progmodes/ruby-mode-resources/ruby-bracketed-args-indent.rb:
New file.
* test/lisp/progmodes/ruby-mode-tests.el: Use it for new case.
| -rw-r--r-- | lisp/progmodes/ruby-mode.el | 23 | ||||
| -rw-r--r-- | test/lisp/progmodes/ruby-mode-resources/ruby-bracketed-args-indent.rb | 32 | ||||
| -rw-r--r-- | test/lisp/progmodes/ruby-mode-tests.el | 1 |
3 files changed, 56 insertions, 0 deletions
diff --git a/lisp/progmodes/ruby-mode.el b/lisp/progmodes/ruby-mode.el index 3bcfa9ee7df..d953ec8b25c 100644 --- a/lisp/progmodes/ruby-mode.el +++ b/lisp/progmodes/ruby-mode.el | |||
| @@ -472,6 +472,26 @@ Only has effect when `ruby-use-smie' is t." | |||
| 472 | :safe 'booleanp | 472 | :safe 'booleanp |
| 473 | :version "29.1") | 473 | :version "29.1") |
| 474 | 474 | ||
| 475 | (defcustom ruby-bracketed-args-indent t | ||
| 476 | "Non-nil to align the contents of bracketed arguments with the brackets. | ||
| 477 | |||
| 478 | Example: | ||
| 479 | |||
| 480 | qux({ | ||
| 481 | foo => bar | ||
| 482 | }) | ||
| 483 | |||
| 484 | Set it to nil to align to the beginning of the statement: | ||
| 485 | |||
| 486 | qux({ | ||
| 487 | foo => bar | ||
| 488 | }) | ||
| 489 | |||
| 490 | Only has effect when `ruby-use-smie' is t." | ||
| 491 | :type 'boolean | ||
| 492 | :safe 'booleanp | ||
| 493 | :version "30.1") | ||
| 494 | |||
| 475 | (defcustom ruby-deep-arglist t | 495 | (defcustom ruby-deep-arglist t |
| 476 | "Deep indent lists in parenthesis when non-nil. | 496 | "Deep indent lists in parenthesis when non-nil. |
| 477 | Also ignores spaces after parenthesis when `space'. | 497 | Also ignores spaces after parenthesis when `space'. |
| @@ -826,6 +846,9 @@ This only affects the output of the command `ruby-toggle-block'." | |||
| 826 | )) | 846 | )) |
| 827 | (`(:before . ,(or "(" "[" "{")) | 847 | (`(:before . ,(or "(" "[" "{")) |
| 828 | (cond | 848 | (cond |
| 849 | ((and (not (eq ruby-bracketed-args-indent t)) | ||
| 850 | (smie-rule-prev-p "," "(" "[")) | ||
| 851 | (cons 'column (current-indentation))) | ||
| 829 | ((and (equal token "{") | 852 | ((and (equal token "{") |
| 830 | (not (smie-rule-prev-p "(" "{" "[" "," "=>" "=" "return" ";" "do")) | 853 | (not (smie-rule-prev-p "(" "{" "[" "," "=>" "=" "return" ";" "do")) |
| 831 | (save-excursion | 854 | (save-excursion |
diff --git a/test/lisp/progmodes/ruby-mode-resources/ruby-bracketed-args-indent.rb b/test/lisp/progmodes/ruby-mode-resources/ruby-bracketed-args-indent.rb new file mode 100644 index 00000000000..ac7a73463bf --- /dev/null +++ b/test/lisp/progmodes/ruby-mode-resources/ruby-bracketed-args-indent.rb | |||
| @@ -0,0 +1,32 @@ | |||
| 1 | update({ | ||
| 2 | key => value, | ||
| 3 | other_key: | ||
| 4 | }, { | ||
| 5 | key => value, | ||
| 6 | other_key: | ||
| 7 | }) | ||
| 8 | |||
| 9 | update([ | ||
| 10 | 1, | ||
| 11 | 2 | ||
| 12 | ], [ | ||
| 13 | 3, | ||
| 14 | 4 | ||
| 15 | ]) | ||
| 16 | |||
| 17 | update([{ | ||
| 18 | key: "value" | ||
| 19 | }, { | ||
| 20 | key: "value" | ||
| 21 | }]) | ||
| 22 | |||
| 23 | update(arg1, { | ||
| 24 | foo: "bar" | ||
| 25 | }, [ | ||
| 26 | 1, | ||
| 27 | 2 | ||
| 28 | ], arg2) | ||
| 29 | |||
| 30 | # Local Variables: | ||
| 31 | # ruby-bracketed-args-indent: nil | ||
| 32 | # End: | ||
diff --git a/test/lisp/progmodes/ruby-mode-tests.el b/test/lisp/progmodes/ruby-mode-tests.el index 2b8506a7adc..c9cde791baa 100644 --- a/test/lisp/progmodes/ruby-mode-tests.el +++ b/test/lisp/progmodes/ruby-mode-tests.el | |||
| @@ -992,6 +992,7 @@ VALUES-PLIST is a list with alternating index and value elements." | |||
| 992 | (ruby-deftest-indent "ruby-method-call-indent.rb") | 992 | (ruby-deftest-indent "ruby-method-call-indent.rb") |
| 993 | (ruby-deftest-indent "ruby-method-params-indent.rb") | 993 | (ruby-deftest-indent "ruby-method-params-indent.rb") |
| 994 | (ruby-deftest-indent "ruby-parenless-call-arguments-indent.rb") | 994 | (ruby-deftest-indent "ruby-parenless-call-arguments-indent.rb") |
| 995 | (ruby-deftest-indent "ruby-bracketed-args-indent.rb") | ||
| 995 | 996 | ||
| 996 | (ert-deftest ruby--test-chained-indentation () | 997 | (ert-deftest ruby--test-chained-indentation () |
| 997 | (with-temp-buffer | 998 | (with-temp-buffer |