Ionide – F# Dev Tools for the Atom Editor
ionide.io
ionide.io
Intellifactory's Websharper projects are well supported and regularly updated, you could try Websharper.Warp[2] in lieu of FunScript.
But i still like it and managed to create fancy stuff with it - Ionide, React.js + Material UI applications etc. Wouldn't recommend using it on production ( unless You want to commit really hard into FunScript project and probably fix lot of this stuff) - WebSharper is providing more complete, richer solution and commercial support if needed
I definitely prefer Atom+Ionide when I want to try something out quickly or experiment. Opening VS and creating a new project just to write a simple fsx script seems excessive to me.
Although, most of the time I'm running them simultaneously.
Also in context of cross platform development - there exists also F# yeoman generator which provides some nice templates for F# projects outside of VS.
Would that be Omnisharp[1], or does the F# community use something different?
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.
[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
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.
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...
Not just open source, it's free under the Apache license.
https://github.com/Microsoft/visualfsharp/blob/master/Licens...
Cheers,
Active Patterns are a pretty cool F# feature that OCaml doesn't have. You can do something that's effectively the same with OCaml macros, but those are a lot more tedious.
The F# intellisense and code completion are great productivity enhancers, especially when it comes to working with unfamiliar libraries.
My biggest hurdle in transitioning from OCaml to F# was learning my way around the .Net ecosystem, so it was still a relatively minor one.
If you decide to get into F# and have any questions about it someone on the #fsharp channel on the Functional Programming Slack[1] usually has an answer.
[1] http://fpchat.com/ <- sign up here, invites usually arrive within 24hrs
Since VS Code is built not on top of Atom but on top of Electron[2] both projects share just "lower level" possibilities and will both build different abstractions layers on top of it. Unless VS Code team chooses to build very similar API to Atom one direct porting won't be easy.
Ionide definitely won't be compatible out the gate, but if the API isn't too different we might be able to reuse some of what we've already done.
The best case scenario would be the if plugin system supports dlls so that we could use the FSharp.Compiler.Service directly[2]
[1] http://visualstudio.uservoice.com/forums/293070-visual-studi...
We definitely support Windows, I'm running it on Windows 10 right now ;)