Git Product home page Git Product logo

Comments (12)

michaelquinn32 avatar michaelquinn32 commented on May 26, 2024 9

As a Vim user who doesn't use Nvim-R (there are dozens of us!), I can't tell you how much I appreciate your work on this. Having the LSP is an order of magnitude improvement over life before.

A long-term goal could also be supporting Rmarkdown documents. Even the smaller subset of features currently provided by the package would be really handy there too.

Thanks!

from languageserver.

randy3k avatar randy3k commented on May 26, 2024 6

Good question. The fact is there were no plans. It lets me think of the following road map. Some of the items below may lead to developments of new packages.

Short term and easy tasks

  • Linting/Diagnostics (basically done)
  • Basic auto completion:
  • Signature help (hints for function arguments)
  • References for objects in default packges
  • References for objects in form of foo::bar or xyz:::abc

Medium term

  • Formatting: styler seems to be a better alternative to formatR which is what I had in mind.
  • Auto completion of attached functions via library and require, it requires an inspection the use of library() if it is a script or an inspection of NAMESPACE file if it is a package
  • References of attached functions (similar to auto completion)
  • Code Lens
  • Go to definition

Long term and/or difficult tasks

  • Robust refactoring (code action)
  • Hook into an active R session and do object completions (something nvimcon of Nvim-R).

from languageserver.

minkir014 avatar minkir014 commented on May 26, 2024 1

You must take care of supporting go to definition.

from languageserver.

randy3k avatar randy3k commented on May 26, 2024 1

We appreciate any contributions. If you want to contribute, I am happy to give some guidance.

from languageserver.

jimhester avatar jimhester commented on May 26, 2024

I think you really need to query the R session to do anything like detecting attached packages. R code can attach packages implicitly if they are in Depends in another package, explicitly in R code with attach() and other ways. Doing so with lexical analysis alone is going to be brittle.

Probably you need something like nvimcom that provides bi-directional communication between the R process and the language server process, this will also let you do object completions easily.

For completions it would also be nice if the package supported custom completions defined using R's rc.options("custom.completer") see ?rc.options for more details. I have a new completeme package that will make it much easier for package authors to define custom completions and have them work in tandem, so while there are few examples today there will likely be more in the near future.

from languageserver.

kylebarron avatar kylebarron commented on May 26, 2024

@randy3k What's the benefit in using the language server instead of Hydrogen, which uses the R Jupyter Kernel. In my experience, Hydrogen has auto-completion based on attached packages.

from languageserver.

randy3k avatar randy3k commented on May 26, 2024

They are different concepts. Language server would be useful in any R files to provide language support. For example, if you are developing an R package, I am quite sure that you don't run Hydrogen on top of the R files. Hydrogen is mainly useful if one is doing data analysis.

from languageserver.

kylebarron avatar kylebarron commented on May 26, 2024

I'll read more about the language server protocol, and might be interested in contributing in the future.

from languageserver.

randy3k avatar randy3k commented on May 26, 2024

@jimhester
It is hard to fully support what RStudio offers via lexical analysis without querying a R session. Inspecting the use of library, the NAMESPACE file and scanning "Depends" iteratively should be sufficient in most cases. The Language server is just a helper anyway, we don't expect it to work under all circumstances.

Discussing something like nvimcom is also too early for now. I also envision such implementation and have put into in the long term target.

Didn't know that there is an option to specify custom completer. Thank for letting me know.

from languageserver.

minkir014 avatar minkir014 commented on May 26, 2024

Do you know if there is any package for providing go to definition? Or you can do manually that by searching the workspace and choosing the one that matches the definition in the syntax.

from languageserver.

randy3k avatar randy3k commented on May 26, 2024

We will need to manually search for the definitions and apply the match. That's one of the reasons why I still haven't implemented it.

from languageserver.

minkir014 avatar minkir014 commented on May 26, 2024

Something else I want to ask you about.
Have you implemented yet symbol outlining??

from languageserver.

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.