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.
This commit is contained in:
parent
c4f0b6ccea
commit
9ed9ff4690
3 changed files with 28 additions and 14 deletions
|
@ -749,20 +749,10 @@ i.e. expr of def foo(args) = expr is returned."
|
||||||
(not ruby-ts--same-line-hash-array-p))
|
(not ruby-ts--same-line-hash-array-p))
|
||||||
grand-parent ruby-indent-level)
|
grand-parent ruby-indent-level)
|
||||||
|
|
||||||
((n-p-gp "}" "hash" "assignment") (ruby-ts--bol ruby-ts--grand-parent-node) 0)
|
((match "}" "hash") parent-bol 0)
|
||||||
((n-p-gp nil "hash" "assignment") (ruby-ts--bol ruby-ts--grand-parent-node) ruby-indent-level)
|
((parent-is "hash") parent-bol ruby-indent-level)
|
||||||
((n-p-gp "]" "array" "assignment") (ruby-ts--bol ruby-ts--grand-parent-node) 0)
|
((match "]" "array") parent-bol 0)
|
||||||
((n-p-gp nil "array" "assignment") (ruby-ts--bol ruby-ts--grand-parent-node) ruby-indent-level)
|
((parent-is "array") parent-bol ruby-indent-level)
|
||||||
|
|
||||||
((n-p-gp "}" "hash" "argument_list") first-sibling 0)
|
|
||||||
((n-p-gp nil "hash" "argument_list") first-sibling ruby-indent-level)
|
|
||||||
((n-p-gp "]" "array" "argument_list") first-sibling 0)
|
|
||||||
((n-p-gp nil "array" "argument_list") first-sibling ruby-indent-level)
|
|
||||||
|
|
||||||
((match "}" "hash") first-sibling 0)
|
|
||||||
((parent-is "hash") first-sibling ruby-indent-level)
|
|
||||||
((match "]" "array") first-sibling 0)
|
|
||||||
((parent-is "array") first-sibling ruby-indent-level)
|
|
||||||
|
|
||||||
;; If the previous method isn't finished yet, this will get
|
;; If the previous method isn't finished yet, this will get
|
||||||
;; the next method indented properly.
|
;; the next method indented properly.
|
||||||
|
|
23
test/lisp/progmodes/ruby-mode-resources/ruby-ts.rb
Normal file
23
test/lisp/progmodes/ruby-mode-resources/ruby-ts.rb
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
variable = foo(
|
||||||
|
[
|
||||||
|
qwe
|
||||||
|
], [
|
||||||
|
rty
|
||||||
|
], {
|
||||||
|
a: 3
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
tee = [
|
||||||
|
qwe
|
||||||
|
]
|
||||||
|
|
||||||
|
qux = [1,
|
||||||
|
2]
|
||||||
|
|
||||||
|
att = {a: 1,
|
||||||
|
b: 2}
|
||||||
|
|
||||||
|
# Local Variables:
|
||||||
|
# mode: ruby-ts
|
||||||
|
# End:
|
|
@ -250,6 +250,7 @@ The whitespace before and including \"|\" on each line is removed."
|
||||||
(should (equal (buffer-string) orig))))
|
(should (equal (buffer-string) orig))))
|
||||||
(kill-buffer buf)))))
|
(kill-buffer buf)))))
|
||||||
|
|
||||||
|
(ruby-ts-deftest-indent "ruby-ts.rb")
|
||||||
(ruby-ts-deftest-indent "ruby-method-params-indent.rb")
|
(ruby-ts-deftest-indent "ruby-method-params-indent.rb")
|
||||||
(ruby-ts-deftest-indent "ruby-block-indent.rb")
|
(ruby-ts-deftest-indent "ruby-block-indent.rb")
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue