Subject: bug#16118: 24.3.50; ruby-smie-rules: hanging literal in first method call argument is indented 1 column too few

From: Dmitry Gutov <[email-masked]>
Date: Thu, 12 Dec 2013 07:48:41 +0200

We have this example in indent/ruby.rb:

foo({
     a: b,
     c: d
   })

- The curlies don't line up.
- If I expand this example, the hash literal in the first argument
  doesn't line up with the arguments after it:

foo({
     a: b,
     c: d
   },
    {
      e: f
    })

foo({
     a: b,
     c: d
   }, :bar => {
      e: f
    })

foo(:bar =>
    {
      a: b,
      c: d
    }, :tee =>
       {
      e: f
    })

...but:

foo({
     a: b,
     c: d
   }, {
     e: f
   })

Still, I think the literals should be lined up to the first column after
"(", not the column of "(" itself. How can we do that?

Adding a `(1+ )' in the relevant place in `ruby-smie-rules' is an
obvious solution, but it breaks other examples.

In GNU Emacs 24.3.50.8 (x86_64-unknown-linux-gnu, GTK+ Version 3.8.6)
 of 2013-12-09 on axl
Bzr revision: 115440 [email-masked]
Windowing system distributor `The X.Org Foundation', version 11.0.11403000
System Description:     Ubuntu 13.10