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

List supporting implementations #8

Closed
svenefftinge opened this issue May 19, 2016 · 180 comments
Closed

List supporting implementations #8

svenefftinge opened this issue May 19, 2016 · 180 comments

Comments

@svenefftinge
Copy link
Contributor

It would be helpful to have a wiki page where we can list any efforts that are working on either a client side or a server side implementation of the protocol.
It's a key information to convince people to use this API and currently hard to find.
So far it seems like from your side vscode is the only client implementation and your JSON support is the only server implementation.
What else are people working on?

@nadako
Copy link

nadako commented May 19, 2016

I'm working on an implementation for Haxe language here https://github.com/vshaxe/haxe-languageserver/tree/master/src. It's not yet ready, but I'm planning to make it a separate lib, similar to how MS did it with vscode-languageserver-node.

EDIT: I started moving the protocol itself implementation into a separate lib: https://github.com/vshaxe/vscode-languageserver-haxe

@svenefftinge
Copy link
Contributor Author

@egamma
Copy link
Member

egamma commented May 19, 2016

(@dbaeumer)
Here are some others server implementations that use the vscode language protocol

Work in progress:

Under consideration

  • Exposing the VS Code CSS/SASS/LESS language service using this protocol. The server will be implemented in TS.

@felixfbecker
Copy link

I was experimenting a with implementing a language server in PHP but didnt work for it for quite a while because I faced limitations in the PHP parser (it cannot parse incomplete code - which is crucial for autocomplete). Need to improve the parser before working on the language server further

@egamma
Copy link
Member

egamma commented May 20, 2016

@svenefftinge I forgot to mention that the 'server based' linters, that is, linters that are run in a server to avoid the restart overhead for each lint pass, are all using the VS Code language protocol:

  • vscode-tslint
  • vscode-eslint
  • vscode-jscs
  • vscode-jshint
  • vscode-htmhint

They typically use the diagnostics subset of the protocol. vscode-eslint is also using code actions/quick fixes.

@dbaeumer
Copy link
Member

The json support inside VSCode uses the protocol as well.

@dbaeumer
Copy link
Member

The Crane - PHP plugin is based on the server protocol as well (the server is implemented in TS) https://marketplace.visualstudio.com/items?itemName=HvyIndustries.crane

@egamma
Copy link
Member

egamma commented May 20, 2016

I've started to a page with the protocol implementations.

Please use this issue to discuss additions/changes.

@svenefftinge
Copy link
Contributor Author

@egamma Cool, thank you.

Some comments. The Java-binding we (TypeFox == Maintainer) are working on is not an implementation for the java language, but a Java implementation of the protocol. I.e. A redefinition of all the message types in Java, together with JSON de/serialization. Also we have defined Java interfaces for the service methods. So it doesn't really belong in the 'Languages' category.

Xtext is spelled with an upper case X :)

@svenefftinge
Copy link
Contributor Author

Codenvy and TypeFox are also working on a client implementation for Eclipse Che.
See eclipse-che/che#1287

@nadako
Copy link

nadako commented May 21, 2016

The link to Haxe thing is not a language server itself, but merely the protocol code (similar to MS's vscode-languageserver-node), the correct link would be https://github.com/vshaxe/haxe-languageserver

@egamma
Copy link
Member

egamma commented May 21, 2016

Thanks for the feedback I made another pass:

  • added a section for SDKs of the protocol
  • added a section with Editors/IDEs of the protocol
  • corrected the contents based on the above feedback.

@georgewfraser
Copy link
Contributor

https://github.com/georgewfraser/vscode-javac uses this protocol to provide Java language support

@egamma
Copy link
Member

egamma commented May 29, 2016

@georgewfraser thanks, I've updated the table.

@TylerJewell
Copy link

Codenvy is working on a JSON implementation of the language server protocol. Also, we will have full support for language server and debugging server protocol within Che workspaces. We are also working on a distributed language server registry. This will allow a user to open a remote workspace and a file with a certain extension. If that extension does not have a language server associated with it, we'll do a lookup to see if one is available for download and installation into a workspace. Each distribute workspace can have different sets of language servers installed.

@bruno-medeiros
Copy link

bruno-medeiros commented Jun 10, 2016

Do any of the server protocol implementations listed so far support being installed and ran stand-alone, that is, outside of VSCode?

I am contemplating writing a client implementation for Eclipse (not Che, but the regular Eclipse desktop IDE), possibly integrating that into MelnormeEclipse a framework for creating Eclipse-based IDEs. But for that I'd like a language server implementation that I could start on its own. (Preferably for a language I know, like Java or C++, but I'd take any mature server). For example, could this be done for the C++ language server?

@nadako
Copy link

nadako commented Jun 10, 2016

I think all nodejs-based server can be easily started without vscode, you just start them with node and connect thru stdio.

@dbaeumer
Copy link
Member

@bruno-medeiros: I think most of the servers are currently bundled with the corresponding VS Code extension. If we want to reuse these server outside VS Code we need to work on packaging them independently of VS Code. I like doing this, but the actual work as to come from the VS Code extension creators. As soon as there is a client to Eclipse & Eclipse Che I think there will be enough motivation for language server providers to do so.

@TylerJewell
Copy link

Also, language servers will need a way to advertise themselves to various tools. A tool provider will want to provide a lookup mechanism and potentially a file type to language server association. And ten each tool provider will have a different process for how to integrate the language server into the editor. VS Code handles this by wrapping each server with an extension. Che will address this by having a common extension that works for all language servers.

So for language servers to advertise themselves and potentially the IDE specific extensions that wrap them, they will need a registry to halt their versions and optional extension adapters.

Codenvy and Eclipse Che are going to build a system to support this. We will then allow language servers to publish and version themselves, and it will be accessible for free by any tool.

@usarid
Copy link

usarid commented Jun 25, 2016

The RAML Workgroup is implementing a language server for RAML, based on an ongoing componentization of the API Workbench. The language server work will be done in a new repo. The API Workbench is powered by a TypeScript-based SDK for RAML that features a parser, syntax highlighting, autocompletion, refactoring, navigation, and other capabilities useful for API professionals. The SDK forms the basis for the API Workbench implemented in Atom, but also has a web version and is intended to be incorporated in various editors and IDEs such as Eclipse. As the SDK components are broken out, we will be incorporating them into a node-based server supporting the Language Server Protocol.

@nojvek
Copy link

nojvek commented Jun 28, 2016

Does #25 help regarding the effort?

Language servers working across IDE's is a win for everyone. Thanks for making this happen.

@spoenemann
Copy link
Contributor

Please update the repository link for the Xtext language server to https://github.com/eclipse/xtext-core/blob/master/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/LanguageServerImpl.xtend (moved to another repository)

@egamma
Copy link
Member

egamma commented Jun 29, 2016

@spoenemann done

@jared2501
Copy link

We are going to build a Groovy and SQL language server implementation over the next few weeks, with a Python one later down the road. I'll post links in the wiki to the code when we have an MVP up on github.

@david-driscoll
Copy link

We've added support for the languageserver protocol to omnisharp via the node module omnisharp-node-client. https://github.com/OmniSharp/omnisharp-node-client/blob/master/languageserver/server.ts

@egamma
Copy link
Member

egamma commented Jul 11, 2016

@david-driscoll this is great news, added a row for omnisharp to the wiki page.

@malekpour
Copy link

Acording to https://github.com/Microsoft/language-server-protocol/wiki/Protocol-Implementations there is a C# sdk/lib

work in progress by @davwil

Is there a repo somewhere?

@pejas
Copy link

pejas commented Sep 29, 2017

Hi,
gnome-builder did source tree reorganization[1] and third column link[2] points to wrong url (path not found). Please change to correct one: https://git.gnome.org/browse/gnome-builder/tree/src/libide/langserv.

Best Regards

[1] https://git.gnome.org/browse/gnome-builder/commit/libide/langserv?id=9b9db77635405aec2184237192a9ee6806caf0c0
[2] https://git.gnome.org/browse/gnome-builder/tree/libide/langserv

@egamma
Copy link
Member

egamma commented Oct 4, 2017

@jpogran I've added the puppet language server to the table. Hope it is OK by you.

@egamma
Copy link
Member

egamma commented Oct 4, 2017

@pejas updated the link, thanks!

@svenefftinge
Copy link
Contributor Author

Another tsserver wrapping language server has been implemented and is maintained by TypeFox: https://github.com/theia-ide/typescript-language-server

We are joining efforts with @prabirshrestha, who has added a deprecation note here.

@adamvoss
Copy link

adamvoss commented Oct 7, 2017

@egamma Is there any reason this one wasn't added?

@egamma
Copy link
Member

egamma commented Oct 8, 2017

@adamvoss sorry about. I must have overlooked it. I've added it now at a position that should correspond to the chronological order of its appearance.

@svenefftinge
Copy link
Contributor Author

@egamma could you also update the typescript entry according to my previous comment? Thanks.

@collarbe
Copy link

collarbe commented Oct 9, 2017

Hi,

We are working on a new language wich is called TypeCobol !
We are currently implementing Language Server Protocol. For now we've got some Code Completion, Jump to def and Diagnostics features.

Here is our GitHub team : https://github.com/TypeCobolTeam
And our repository : https://github.com/TypeCobolTeam/TypeCobol/tree/master/TypeCobol.LanguageServer

Let me know if you need more information.
Thanks

@kseo
Copy link

kseo commented Oct 10, 2017

@egamma Could you add solidity-language-server to the list?

Project: https://github.com/CodeChain-io/solidity-language-server
Language: Solidity
Author: Kodebox

@egamma
Copy link
Member

egamma commented Oct 10, 2017

@svenefftinge done, sorry for the delay

@egamma
Copy link
Member

egamma commented Oct 10, 2017

@collarbe done

@egamma
Copy link
Member

egamma commented Oct 10, 2017

@kseo done

@mickaelistria
Copy link

@egamma With you change 05a39fd39a5433ed55b379d27439968bf69e1038 on the wiki from Aug 7th 2017, you removed the list of SDKs for the various programming language. I find this information is very valuable for the integrators who want to add support for new language or tools, and removing it makes their task harder. Was this removal intentional? If yes, what's the rationale? I'd be glad to see this valuable list back on this page!

@egamma
Copy link
Member

egamma commented Oct 18, 2017

@mickaelistria sorry about that. I've restored the contents and extracted it into a separate page.

@laughedelic
Copy link
Contributor

Another very promising Scala language server based on Scalameta: https://github.com/scalameta/language-server

@egamma
Copy link
Member

egamma commented Nov 8, 2017

@laughedelic added to the table, thanks.

@StephanieSu
Copy link

StephanieSu commented Nov 15, 2017

Hi, Visual Studio 2017 now has Language Server support in preview that is maintained by Microsoft. https://marketplace.visualstudio.com/items?itemName=vsext.LanguageServerClientPreview

@tintoy
Copy link

tintoy commented Nov 15, 2017

@StephanieSu - is the source for the LSP client library (Microsoft.VisualStudio.LanguageServer.Client) available anywhere? I built something similar a while back and it would be great to compare notes :)

@david-driscoll
Copy link

The list at https://github.com/Microsoft/language-server-protocol/wiki/Protocol-Implementations is wrong, https://github.com/OmniSharp/csharp-language-server-protocol is an SDK for writing LSP servers and clients.

OmniSharp LSP is currently through https://github.com/OmniSharp/omnisharp-node-client with direct support in https://github.com/OmniSharp/omnisharp-roslyn coming soon.

@egamma
Copy link
Member

egamma commented Nov 16, 2017

@egamma
Copy link
Member

egamma commented Nov 16, 2017

@david-driscoll thanks, I've fixed protocol implementations page.

https://github.com/OmniSharp/csharp-language-server-protocol is already listed on the SDK page https://github.com/Microsoft/language-server-protocol/wiki/Language-Server-Protocol-SDKs. So I think we are OK now.

@svenstaro
Copy link
Contributor

I just released my glsl language server. It currently only does diagnostics but it does it pretty well.

@zabil
Copy link
Contributor

zabil commented Dec 4, 2017

We've released our open source testing tool, Gauge https://github.com/getgauge/gauge/ with language server protocol support. It implements

  • Code completions
  • Diagnostics
  • Find references
  • A couple of code lens
  • Symbols

We'll be releasing our Visual Studio Code plugin plugin soon.

@nadeeshaan
Copy link

nadeeshaan commented Dec 15, 2017

We have released our language server implementation for BallerinaLang.

Language: Ballerina
Language sever Implementation
VSCode Plugin
Maintainer: BallerinaLang.org

Supported Features:

  • Code completion
  • Hover
  • Signature Help
  • Diagnostics
  • Document Symbols

Let me know if you need more information

Cheers

@natebosch
Copy link
Contributor

I'd appreciate an entry for the language server for Dart: https://github.com/natebosch/dart_language_server
(No vscode plugin since there is already a more full featured plugin using a different server protocol: https://github.com/Dart-Code/Dart-Code)

Also another client for vim: https://github.com/natebosch/vim-lsc

Thanks!

@microsoft microsoft locked as resolved and limited conversation to collaborators Dec 21, 2017
@dbaeumer
Copy link
Member

dbaeumer commented Dec 21, 2017

I have locked the issue and will close it. The protocol has now its own web site with pages for the implementations. So new implementations can be announced via a pull request against
servers, tools and sdks web pages written in markdown.

@dbaeumer
Copy link
Member

@egamma I added the servers mentioned in the following comments

#8 (comment)
#8 (comment)
#8 (comment)
#8 (comment)

@egamma
Copy link
Member

egamma commented Dec 21, 2017

@dbaeumer great thanks 🌷

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests