OmniSharp / omnisharp-node-client

node client for the omnisharp-roslyn server
http://www.omnisharp.net/
MIT License
52 stars 19 forks source link

omnisharp-node-client Travis Appveyor

The node client for omnisharp-roslyn is a unified way to interact with the roslyn server.

It currently offers the ability to connect to your local server over Stdio. In the future more drivers can be added, to allow it to connect to the server over Http, Web Sockets, the cloud... anything really. The current focus is covering the entire Api surface of roslyn with a strongly typed interface (for those typescript users out there). This will allow anyone wanting to fire up an omnisharp server to be able to do so with ease.

Used by

Developers

To get started:

!Windows Developers!

There is an issue with kre beta3 and Nuget.Core trying to resolve as NuGet.Core.

The fix is to set up a local nuget repository that contains a modified package. The modified package can be found here: https://onedrive.live.com/redir?resid=b65e6b05ae4ee402!109984&authkey=!AOlvubzpEnZbJJg&ithint=file%2cnupkg

Rough installation steps are:

This should solve the issue with KPM restore not working correctly. I imagine once we update to beta4 this will go away. NOTE: This is just to build the server locally, once it's built once you can just ignore this step.

Api

The api mimics the roslyn surface, with strongly typed methods for everything. Under the covers we use RxJS to handle our events. Through the API we offer several streams of data, as well as several ways of data access.

For those that like promises, there is a promise API as well.

Methods

Observables

Response Observables

These observables are just shorthand for the overall responses stream. These are useful because it allows you to fire and forget to the client, and then on the responses setup specific behavior.

Since the request is bundled with the response in the context object, you have all the data that you sent, plus the response to do with as you please. This allows you to greatly simplify your code, fire from many places, and observe once.