Comments (3)
I'm not sure if having such continuations inside argument lists is a good idea at all. The example you've given shows the problem clearly, but why the need to split the method invocation anyway? Method call too long? Why not do something like this instead:
example = a(
bcd.gef
)
Regardless, I've created a branch called continuation-indent-tweaks
. I think I managed to get it working, but there's an annoying side effect. You see, this works just like you specified:
a(bcd.
gef)
Unfortunately, so does this:
a(bcd,
gef)
The reason is that I'm using the s:non_bracket_continuation_regex
pattern to match the line. It's an issue, because the very reason for having round braces indented in such a way (as far as I can tell) is aligning the arguments like so:
example = foo(:one => :two,
:three => :four)
So, the question is, where do we draw the line? Do we exclude the comma in particular? This would probably mean having yet another "continuation" regex. Also, I really think that regardless of what we do, using line continuations within argument lists is never going to look good and defeats the purpose of the hanging indent in this case.
from vim-ruby.
Yes. The reason that you'd do this is that it's too long for one line. This example is contrived, but succinct and plain. I noticed the problem when breaking a very long nested line across lines.
Expected
def foo
bar(
thing
.stuff
)
end
Actual
def foo
bar(
thing
.stuff
)
end
from vim-ruby.
That's a reasonable example, I guess. Personally, I'd just extract thing.stuff
to a variable before handing it to bar
:). Vim-ruby has trouble handling complicated nested structures like this, there's a lot of edge cases and it's hard to tell them apart.
This is a big reason why I'm reluctant to try working on this -- it would be really hard to implement without breaking something else. And, again, it just seems like a really simple solution in cases like this would be to extract some variables instead of trying to cram everything into a single call. I know that it doesn't solve the actual problem of "vim-ruby doesn't indent this case right", but it should solve your problem until some day when we restructure the code to make stuff like this easier to handle :).
from vim-ruby.
Related Issues (20)
- tags turn off HOT 2
- eruby filetype plugin leaks memory HOT 4
- Incorrectly indenting next line after an endless method HOT 4
- Incorrect highlighting of quoted symbols
- Vim-ruby is changing path variable HOT 8
- Folding with single line method definitions HOT 1
- "gf" mapping broken by command-line abbreviation HOT 6
- Issue with ctags (ctrl + ] )
- Visual selection not working with treesitter on Neovim HOT 3
- Incorrect indentation for `case/in` statements
- Release for Ruby 3 and Vim 9 HOT 4
- Complex string incorrectly highlights as quoted symbol HOT 2
- End-less methods aren't recognized when they are class methods HOT 3
- Incorrect auto indentation with string interpolation HOT 5
- ruby 1.9 style hash does not highlight { in matchparen.vim HOT 1
- with cursorline enabled, eruby tends to lose highlighting (no 'syntax sync') HOT 2
- [Neovim/Vim] Replaying macro broken HOT 2
- Vim 9.1 HOT 4
- Nice
- Vim 9.1 again... HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from vim-ruby.