Subject: Re: bug#16182: 24.3.50; ruby-mode: Indentation style of multiline literals with hanging open paren inside other parens

From: Dmitry Gutov <[email-masked]>
Date: Thu, 19 Dec 2013 06:57:29 +0200

Stefan Monnier <[email-masked]> writes:

>>   Status.create!({
>>     user: current_user,
>>     text: params[:status]
>>   })
> This looks fine.

This is not hard to support (add some `skip-syntax-forward' before the
relevant `smie-indent--hanging-p' call), but does it make sense to
indent this call one way, and when the first argument does not start
with a hanging paren (like `self', in the example below), do it
differently?

>>   methods.each do |method|
>>     route_set.add_route(self, {
>>       path_info: route.route_compiled,
>>       request_method: method,
>>     }, route_info: route)
>>   end

> But this looks confusing to me.  If (as a coder) I wanted to keep the
> code "not too deeply indented", I'd use something like:
>
>    methods.each do |method|
>      route_set.add_route(
>        self,
>        { path_info: route.route_compiled,
>          request_method: method, },
>        route_info: route)
>    end

I agree it makes sense, but this change could be not entirely obvious to
users not familiar with Emacs indentation engines.

> But that's just me (and I haven't checked to see if the current
> indenter would get this right).

It does now.