Giter Site home page Giter Site logo

Calling robe-doc-for from elsewhere about robe HOT 15 OPEN

dgutov avatar dgutov commented on July 26, 2024
Calling robe-doc-for from elsewhere

from robe.

Comments (15)

dgutov avatar dgutov commented on July 26, 2024

Hi Steve,

Spec is a more or less resolved/disambiguated method. To get the list of them for a method name, you make a call to method_targets in the backend.

robe-jump-modules does more or less that on the Elisp side. It also tries to resolve the context at point, so I should probably extract the relevant piece of code to another function.

from robe.

purcell avatar purcell commented on July 26, 2024

That'd be cool. I just released an initial simple version of ac-inf-ruby without any documentation support for now.

from robe.

dgutov avatar dgutov commented on July 26, 2024

Actually, why don't you just call (robe-request "method_targets" target module instance super robe-jump-conservative), like robe-jump-modules does in the end?

Let me know if you need help deciphering the arguments.

from robe.

purcell avatar purcell commented on July 26, 2024

Can do, if the signature of that method is going to remain fairly stable for a while.

from robe.

purcell avatar purcell commented on July 26, 2024

Yeah, I think it's not practical to do that, because I'd have to reproduce the logic in robe-call-context, which works off the buffer contents, which won't be the same as the selected completion candidate. I guess I'd need something like a (robe-parse-call-context str)...

from robe.

dgutov avatar dgutov commented on July 26, 2024

Can do, if the signature of that method is going to remain fairly stable for a while.

It's likely to change at some point, but I'll make sure to let you know.

I guess I'd need something like a (robe-parse-call-context str)

I was thinking you'd just ignore everything surrounding the method name. But if you'd like to at least recognize when the call target is a class, you can do (with-temp-buffer ...), insert the repl text after the prompt there, replace the prefix with the completion candidate and then call robe-jump-modules there.

from robe.

dgutov avatar dgutov commented on July 26, 2024

I just released an initial simple version of ac-inf-ruby without any documentation

I like the difference in verbosity. :)

from robe.

purcell avatar purcell commented on July 26, 2024

Re. the verbosity, yes, I need to give company another try. I switched over for a while several months ago, but eventually reverted, for reasons I don't now recall. And similarly, I'm now on about my 3rd attempt to live with smartparens instead of paredit.

from robe.

dgutov avatar dgutov commented on July 26, 2024

It would be nice if you could recall the reason you went back the last time. Lack of integration with various packages, like Tern?

I've never tried smartparens myself, paredit and autopair work reasonably well so far. Maybe in a couple of years... :)

from robe.

purcell avatar purcell commented on July 26, 2024

Yep, I wish I could remember. I'll try flipping back so that I can give more useful feedback.

Re smartparens, I've just today gone back to paredit in lisps, and electric-pair-mode + paredit-everywhere elsewhere. Yesterday I suggested that the author copy the paredit test suite, which he agrees is a good plan. I like the idea of smartparens - and of providing feedback to help it improve - but some of the quirks have been frustrating on a day-to-day basis. I'd rather have something less complex which does 80% of the same thing but with 100% reliability.

from robe.

dgutov avatar dgutov commented on July 26, 2024

I'd rather have something less complex which does 80% of the same thing but with 100% reliability.

Same here.

With electric-pair-mode, I mostly miss the Autopair newline feature, when if point is directly between two parens, it adds two newlines, one before and one after point, and indents the current line. Does smartparens do that?

from robe.

purcell avatar purcell commented on July 26, 2024

I haven't noticed it doing that, but smartparens was doing a lot of unexpected stuff by default, e.g. if you had:

(foo-b|ar-baz "one")

where | is point, and you pressed C-k, you'd get:

("one")

which confused me. There's lots of magic whitespace behaviour too, and special behaviour inside strings. It can all be configured, but I really just want paredit + reasonable pairing.

What finally turned me off was that there's a show-smartparens-mode which does nice things like highlighting the corresponding end in a ruby buffer if you have the point on def. But in certain buffers this became very slow, because the ruby syntax isn't regular enough to make it easy.

Still, give it a try sometime and see what you think.

from robe.

dgutov avatar dgutov commented on July 26, 2024

that there's a show-smartparens-mode which does nice things like highlighting the corresponding end

FWIW, Ruby with SMIE enabled integrates with show-paren-mode and also highlights paired keywords. And does it rather snappily, I'd say.

from robe.

purcell avatar purcell commented on July 26, 2024

Ooh, shiny! -> dashes off to try it out

from robe.

purcell avatar purcell commented on July 26, 2024

Works nicely! I've been using mic-paren for a while, and I'm thinking I might be able to drop that in favour of plain show-paren-mode now...

from robe.

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.