Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Scala support #958

Closed
benmccann opened this issue Apr 2, 2016 · 16 comments
Closed

Scala support #958

benmccann opened this issue Apr 2, 2016 · 16 comments
Labels
kind/enhancement A feature request - must adhere to the feature request template.

Comments

@benmccann
Copy link

I'd like to see Scala support added. How do you add support for a new language? Can any code from the Scala IDE Eclipse plugin be reused?

@TylerJewell
Copy link

Hi @benmccann. We'd love to see first-class Scala support within the default distribution of Eclipse Che. One of our objectives for the quarter is to focus on building out a plugin resource center, to provide a comprehensive set of tutorials and documentation that outlines how alter the product with two key use cases: a) adding a new programming language with intellisense experience, and b) adding a new tool capability like what we do for Git (or the subversion plugin which just got merged).

We'd love it if the communite could start contributing early. There is a number of things that can be done with the product today.

  • Add a Stack. Stacks are the configuration of the workspace runtimes. Is there an optimized Scala stack that we can package into the product. We would want to make sure the appropriate Scala tools are installed. Probably one for just the language and maybe another one that includes the most common frameworks included - maybe the Play framework.
  • Add templates. Templates are matched to a Stack and provide sample projects + commands that will let a new user get a project with source code that can edit / build / compile it.
  • Language Extension. Once you get to this level, then to add additional capabilities we get into extension development and packaged as plugins. There are two types of extensions that would need to be built. First, a dependency management extension for sbt, similar to what we have for maven out of the box (or perhaps some maven-scala plugin instead). Beyond providing useful utilities for working with the build system, it more importantly is responsible for dependency management, downloading dependencies, and managing dynamic classpaths (all of which are necessary for good intellisense to start working). We are just about to merge a rewrite of the maven plugin - but you can see it in one of the branches. Second, an extension that focuses on the intellisense capabiltiies. This would be on the server-side which would reuse the same utilities that are in the Scala Eclipse IDE plugin and package them into the server-side with JAX-RS wrappers. Once these were there, then it's fairly straight forward to writing editor extensions in the IDE that can interact with the RESTful services. This is what we do for Java.

On this last part, we are starting to document how we do this in tutorials and documentation pages in the CUSTOMIZING.md file. It's incomplete, but we are slowly working through all ofthe pages that need to be developed. And we have examples for how we do everything in the /plugins folder of the repository, along with providing a lot of personalized assistance, if you want it.

@benmccann
Copy link
Author

Thanks for the detailed response

  • Stack. I'd recommend the Stack should install Java 8 and sbt or activator
  • Templates. I'm not sure this is necessary for Scala because there's already the activator tool for Scala which wraps sbt and provides numerous templates
  • Language Extension. Yeah, this is the part I was thinking of that would be really valuable. There's sbteclipse which creates the .classpath for Eclipse. Would the dependency management extension needed be similar?

@TylerJewell
Copy link

Yes that is the sort of extension that is needed to get the project configuration and project type to match up so that dependencies can be evaluated.

I would recommend that a stack get built first and merged into the main stream. I think you'd want the activator installed in the stack and to show that the command line is workable. Then in a second phase the sbt work would be analyzed.

@ghost ghost added the kind/enhancement A feature request - must adhere to the feature request template. label Apr 7, 2016
@Fabs
Copy link

Fabs commented Jun 2, 2016

I would love to see at happening and could help with testing and feedback :).

@DarkBlaez
Copy link

Has any further progress on this been made? I am currently getting the dockerfile built out to create the workspace for Scala. However, just wanted to see if there was any further progress or such so I do not collide with current work on this.

Thanks

@TylerJewell
Copy link

Hi @DarkBlaez - there hasn't been anything moved further on the Scala front that I have seen yet. However, we are about 6 weeks away from making our first public release of our language server protocol implementation and it will have Java, C#, JSON, and maybe C/C++. We still have a lot more work to do on our side around making sure that we can accept any language server that uses the right JSON protocol. So once that is there, it should become plug-n-play for other language intellisense providers to drop in rich sets of functionality that is usable from the Che editor.

#1287
#2109

These issues are getting updated later this week. There is about 10 pages of notes that go along with them. There is some super impressive capabilities there.

@DarkBlaez
Copy link

Tyler thanks for the update. I will hold up on any efforts other than what I am doing on the workspace until the language server protocol build is released. In the mean time i will go review the referenced notes and links to come up to speed with what is being done. Thanks and greatly appreciated

@alexbde
Copy link

alexbde commented Jan 13, 2017

+1

@GeYebo
Copy link

GeYebo commented Mar 26, 2017

Has there been any progress on this? Thanks.

@TylerJewell
Copy link

TylerJewell commented Mar 27, 2017 via email

@VRanga000
Copy link

Could you possibly leverage [ensime](ensime http://ensime.org/) for the scala language server?

@cheleb
Copy link

cheleb commented Apr 21, 2017 via email

@dclong
Copy link

dclong commented May 6, 2018

Any update on this? Lack of support for Scala is the thing stops me from migrating to Eclipse che.

@ljl1988com
Copy link

Is there a plan to support for scala?

@dneary
Copy link
Contributor

dneary commented Feb 26, 2019

We got a question on StackOverflow on this topic.

@gorkem
Copy link
Contributor

gorkem commented Aug 23, 2019

We have no plans to support Scala from the Che project but we do have LSP and vscode plugin compatibility and we welcome any extensions that would like to publish on our registry.

Asking Scala extension providers such as https://github.com/scalameta/metals for a Che extension is the better way to proceed.

@gorkem gorkem closed this as completed Aug 23, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/enhancement A feature request - must adhere to the feature request template.
Projects
None yet
Development

No branches or pull requests