aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry Gutov2023-01-18 00:41:14 +0200
committerDmitry Gutov2023-01-18 03:27:37 +0200
commit5e2e68a0c2d7d4e06747ea9fc6112dae8d5e32b6 (patch)
tree22e5aa4826f7591144d7486b6375d086f92f0e0b
parent9ed9ff4690a8b26ac9729a66aa22f2e14856cd0c (diff)
downloademacs-5e2e68a0c2d7d4e06747ea9fc6112dae8d5e32b6.tar.gz
emacs-5e2e68a0c2d7d4e06747ea9fc6112dae8d5e32b6.zip
ruby-ts-mode: Fix indent inside parenthesized_expr and else/end after unless
* lisp/progmodes/ruby-ts-mode.el (ruby-ts--indent-rules): Fix indentation for parenthesized_expression and else/end after 'unless'. * test/lisp/progmodes/ruby-mode-resources/ruby-ts.rb: New examples.
-rw-r--r--lisp/progmodes/ruby-ts-mode.el7
-rw-r--r--test/lisp/progmodes/ruby-mode-resources/ruby-ts.rb10
2 files changed, 15 insertions, 2 deletions
diff --git a/lisp/progmodes/ruby-ts-mode.el b/lisp/progmodes/ruby-ts-mode.el
index 19b766ceadb..853c869a319 100644
--- a/lisp/progmodes/ruby-ts-mode.el
+++ b/lisp/progmodes/ruby-ts-mode.el
@@ -587,11 +587,11 @@ i.e. expr of def foo(args) = expr is returned."
587 ;; 587 ;;
588 ;; I'm using very restrictive patterns hoping to reduce rules 588 ;; I'm using very restrictive patterns hoping to reduce rules
589 ;; triggering unintentionally. 589 ;; triggering unintentionally.
590 ((match "else" "if") 590 ((match "else" "if\\|unless")
591 (ruby-ts--align-keywords ruby-ts--parent-node) 0) 591 (ruby-ts--align-keywords ruby-ts--parent-node) 0)
592 ((match "elsif" "if") 592 ((match "elsif" "if")
593 (ruby-ts--align-keywords ruby-ts--parent-node) 0) 593 (ruby-ts--align-keywords ruby-ts--parent-node) 0)
594 ((match "end" "if") 594 ((match "end" "if\\|unless")
595 (ruby-ts--align-keywords ruby-ts--parent-node) 0) 595 (ruby-ts--align-keywords ruby-ts--parent-node) 0)
596 ((n-p-gp nil "then\\|else\\|elsif" "if\\|unless") 596 ((n-p-gp nil "then\\|else\\|elsif" "if\\|unless")
597 (ruby-ts--align-keywords ruby-ts--grand-parent-node) ruby-indent-level) 597 (ruby-ts--align-keywords ruby-ts--grand-parent-node) ruby-indent-level)
@@ -754,6 +754,9 @@ i.e. expr of def foo(args) = expr is returned."
754 ((match "]" "array") parent-bol 0) 754 ((match "]" "array") parent-bol 0)
755 ((parent-is "array") parent-bol ruby-indent-level) 755 ((parent-is "array") parent-bol ruby-indent-level)
756 756
757 ((match ")" "parenthesized_statements") parent-bol 0)
758 ((parent-is "parenthesized_statements") parent-bol ruby-indent-level)
759
757 ;; If the previous method isn't finished yet, this will get 760 ;; If the previous method isn't finished yet, this will get
758 ;; the next method indented properly. 761 ;; the next method indented properly.
759 ((n-p-gp ,ruby-ts--method-regex "body_statement" ,ruby-ts--class-or-module-regex) 762 ((n-p-gp ,ruby-ts--method-regex "body_statement" ,ruby-ts--class-or-module-regex)
diff --git a/test/lisp/progmodes/ruby-mode-resources/ruby-ts.rb b/test/lisp/progmodes/ruby-mode-resources/ruby-ts.rb
index 6b4107ef97b..7de94ceadec 100644
--- a/test/lisp/progmodes/ruby-mode-resources/ruby-ts.rb
+++ b/test/lisp/progmodes/ruby-mode-resources/ruby-ts.rb
@@ -18,6 +18,16 @@ qux = [1,
18att = {a: 1, 18att = {a: 1,
19 b: 2} 19 b: 2}
20 20
21a = 1 ? 2 :(
22 2 + 3
23)
24
25unless bismark
26 sink += 12
27else
28 dog = 99
29end
30
21# Local Variables: 31# Local Variables:
22# mode: ruby-ts 32# mode: ruby-ts
23# End: 33# End: