Comments (8)
Method calls and local variable references do have the same syntax in Ruby -- at least in general. So the highlighter does have no option to distinguish the two cases reliably (unless 'self' is used to give methods an explicit receiver, or '()' are always used for method calls, which is non-idiomatic Ruby).
from vim-ruby.
That's mostly what I figured, but I was wondering if vim could maybe look in the definition for the method or block a line is being written in, and find the variable names from there, and use that from coloring. I'm guessing though that vim does everything just per line?
from vim-ruby.
What you suggest amounts to actually parsing part of the buffer to augment the highlight information. If I'm not mistaken this is well beyond the possibilities of the Vim highlighter, which is purely syntax based. It would also make highlighting more expensive.
To have an actual parser help with highlighting would be a good thing, though. I don't know if it's possible to use an (external) parser to help with syntax highlighting from within Vim. Just having different colors for local variables vs. methods would probably not be worth the effort required. However, with a parser helping it would be possible to mark faulty Ruby code, and that's nice.
Maybe take a look at what 'eclim' does, that's a Vim script which communicates with the Eclipse IDE running in the background, to have advanced content sensitive features when editing Java code.
from vim-ruby.
Yes, this is effectively impossible with Vim's regex based highlighting.
from vim-ruby.
Noo need to look up the method name, the way you distinguish method calls and variables is much simpler!
def foo_is_variable
foo = 'we assign value'
foo #foo is variable
end
def foo_is_method
foo #here, foo wasn't assigned any value -> it is a method call
end
from vim-ruby.
@hakunin to be clear, that doesn't make it any more possible.
from vim-ruby.
@tpope so there is no state where it could store the vars in local scope?
I saw that vim knows, if I write one 'end' too many and it doesn't highlight it. Is that done through some kind of state?
from vim-ruby.
Vim highlighting has a concept known as a "region" which is basically a pair of start and end regexes. And it allows you to nest them.
from vim-ruby.
Related Issues (20)
- inconsistent indent for if statements HOT 2
- 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
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.