Code Monkey home page Code Monkey logo

Comments (8)

sigi avatar sigi commented on May 22, 2024

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.

dnd avatar dnd commented on May 22, 2024

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.

sigi avatar sigi commented on May 22, 2024

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.

tpope avatar tpope commented on May 22, 2024

Yes, this is effectively impossible with Vim's regex based highlighting.

from vim-ruby.

hakunin avatar hakunin commented on May 22, 2024

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.

tpope avatar tpope commented on May 22, 2024

@hakunin to be clear, that doesn't make it any more possible.

from vim-ruby.

hakunin avatar hakunin commented on May 22, 2024

@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.

tpope avatar tpope commented on May 22, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.