|
From: | Dmitry Gutov |
Subject: | bug#60321: 29.0.60; ruby-mode indentation of hash or array as first arg in multiline method call |
Date: | Sun, 25 Dec 2022 23:29:21 +0200 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.2 |
X-Debbugs-CC: aaronjensen@gmail.com Splitting off from debbugs#60186, second try.Since this setting also seems orthogonal to the "simplified" preference, and it'll require some more work.
For future reference, here are the relevant Rubocop settings: https://docs.rubocop.org/rubocop/cops_layout.html#layoutfirsthashelementindentation https://docs.rubocop.org/rubocop/cops_layout.html#layoutfirstarrayelementindentation On 25/12/2022 02:12, Aaron Jensen wrote:
We could also discuss cases like foo = bar({ tee: 1, qux: 2 }) baz([ 1, 2, 3 ]) but those would be an orthogonal feature. And I don't see them much in the wild, for some reason.The same logic would apply. It doesn't matter how many indent starters there are in a line, the indentation should only increase by one: foo = bar({ tee: 1, qux: 2 }) baz([ 1, 2, 3 ]) Of course, that begs the question what happens if you do this: baz([ 1, 2, 3 ] )
Here are a couple trickier examples: takes_multi_pairs_hash(x: { a: 1, b: 2 }) and_in_a_method_call({ no: :difference }, foo, bar)AFAICT even Rubocop doesn't have a setting which would indent the second one somewhat reasonably, while keeping two-space indent before "no".
And, I think again, the answer is a social one, rather than a technical one. enh-ruby-mode and vim both do this this: baz([ 1, 2, 3 ] )
Yup, that looks pretty bizarre. OTOH, I don't see why a developer would put a newline between "]" and ")" in this case.
[Prev in Thread] | Current Thread | [Next in Thread] |