Hacker News new | ask | show | jobs
by k_cieslak 3920 days ago
Omnisharp[1] is build on top of Roslyn so as for now it supports only C# / VB. As far as I know they are working on adding plugin support for it for non-Roslyn language so maybe in the future we will have F# plugin there ( actually, as far as I know, that's MSFT plan for adding F# support in VS Code)

F# has had opensourced compiler[2] (written in F#) before it was cool in .Net stack and for most tooling things we are using FSharp.Compiler.Services[3] project - which basically provides all features of F# compiler (and much more) as normal .Net library. Projects like Visual F# Power Tools[4] and Xamarin Studio F# support[5] are using it to provide very interesting F# IDE features.

Since Vim, Emacs, Sublime and Atom (even though Ionide is written in F# and compiled to JS we can't use all .Net libraries) don't have direct access to .Net assemblies, community have created FsAutoComplete[6] project which is just command line wrapper around FSharp.Compiler.Services and works as "standard I/O server" where we send requests (for example if user wants completion list) and get appropriate responses.

[1] http://www.omnisharp.net/

[2] https://github.com/Microsoft/visualfsharp

[3] https://github.com/fsharp/FSharp.Compiler.Service

[4] https://github.com/fsprojects/VisualFSharpPowerTools

[5] https://github.com/fsharp/xamarin-monodevelop-fsharp-addin

[6] https://github.com/fsharp/FsAutoComplete

2 comments

> F# has had opensourced compiler

Not just open source, it's free under the Apache license.

https://github.com/Microsoft/visualfsharp/blob/master/Licens...

> Omnisharp[1] is build on top of Roslyn so as for now it supports only C# / VB

That is fairly new code.

It was based on NRefactory in the past which I thought was reflection-based, but I may have been wrong.

> for now it supports only C# / VB Nope, there is not any support for VB at this point in time. It's C# only I'm afraid!

As cloudroutine mentions, the older omnisharp-server implementation is NRefactory based, whilst omnisharp-roslyn (as the name implies) has been built atop roslyn.

omnisharp-roslyn retains a bit of NRefactory (the code actions part[1]), which was called NR6Pack and has now been renamed as Refactoring Essentials [2].

Anyway, there's been a lot of recent changes in the works, as someone has already mentioned, omnisharp-rolsyn currently has an open PR [3] which will provide a plugin system to omnisharp-roslyn. Once introduced, it will mean that the various omnisharp editors/clients can pick and choose which plugins they wish to bundle with their editor. This may include F#, VB, Cake, Fake and many others.

New contributors are, as always most welcome :)

---

[1] https://github.com/OmniSharp/omnisharp-roslyn/blob/f62e74324...

[2] http://vsrefactoringessentials.com

[3] https://github.com/OmniSharp/omnisharp-roslyn/pull/293

That was Omnisharp-Server, they only switched over to the Omnisharp-Roslyn[1] implementation a few months ago.

[1] https://github.com/OmniSharp/omnisharp-roslyn