I want to make emacs indent ruby method calls like:
foo(
:blah => 'bar',
:shibby => 'baz'
)
The closest I can get is:
foo(
:blah => 'bar',
:shibby => 'baz'
)
This is using ruby-deep-indent-paren, ruby-deep-indent-paren-style, ruby-deep-arglist all set to nil.
Hashes indent how I like... if I could just make method calls indent like hashes I would be happy. Any ideas?
Dmitry Gutov has posted this fix, using advice, which seems to work:
(defadvice ruby-indent-line (after unindent-closing-paren activate)
(let ((column (current-column))
indent offset)
(save-excursion
(back-to-indentation)
(let ((state (syntax-ppss)))
(setq offset (- column (current-column)))
(when (and (eq (char-after) ?\))
(not (zerop (car state))))
(goto-char (cadr state))
(setq indent (current-indentation)))))
(when indent
(indent-line-to indent)
(when (> offset 0) (forward-char offset)))))
Ruby indentation in the current Emacs trunk (to be released as 24.4) works like you're asking without any additional tweaks.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With