[Guest Post] Announcing F# Support in Visual Studio Code with Ionide

This is a guest post by Krzysztof Cieślak, an F# community developer and contributor to the Ionide project including its Visual Studio Code extension. To learn more about F# and engage with the community, head to fsharp.org. To learn more about the Ionide project, head to ionide.io.

Ionide is a suite of packages for the Atom editor that aims to provide a fully-featured, modern, cross-platform, open-source IDE for F# development. It’s available via download using the Atom Package Manager.

At Connect, we announced the release of a set of Ionide extensions for Visual Studio Code, adding F#, Paket and FAKE support to this newly open-sourced, cross-platform editor.

What is Ionide?

Ionide provides the option of a lightweight cross-platform editor for programmers who don’t want to rely on Visual Studio or Xamarin Studio for every project. While both are full-featured IDEs with great F# support – much better in terms of plain language support features – there are many programmers, especially those coming from a functional programming background, who prefer a different style of tools.

Another important feature of the Ionide project is its integration with popular tools used by the F# community – such as Paket (alternative NuGet client), FAKE (F# Make), and the F# Yeoman generator. Ionide enables developers to use this unique, integrated, open source tooling workflow from the comfort of their editor.

Ionide is an eight month-old project with almost 500 commits, 120 versioned releases, and 13 contributors for the core Atom F# support plugin. And now, we’re excited to start a new pillar of the Ionide project – Ionide for Visual Studio Code.

Ionide for Visual Studio Code

Visual Studio Code is new, cross-platform text editor created by Microsoft that combines the streamlined UI of a modern editor with rich code assistance and navigation, and an integrated debugging experience – without the need for a full IDE. As such, it has an aim similar to the Ionide project, and the decision to create a set of Visual Studio Code plug-ins was simple and natural.

F# support

Ionide-fsharp provides an F# IDE-like experience in Visual Studio Code, with features like

Better syntax highlighting

Auto-completion

Error highlighting and error list

F# Interactive integration

Tooltips

Go to Declaration

Show symbols in file

Paket support

Paket is package dependency manager for .NET with support for NuGet packages and GitHub repositories. Ionide-Paket allows users to use Paket commands and manage packages without leaving the editor.

FAKE support

FAKE (F# Make) is a build automation system with similar capabilities to make and rake. It uses a domain-specific language (DSL) to make it easy to start using FAKE without needing to learn F#. Ionide-FAKE allows the user to run any build target defined in a FAKE build script, define default targets to run using keyboard shortcuts, and cancel any task in progress.

What’s next?

In the near future, we hope to add integration with F# Yeoman generator to Visual Studio code to provide scaffolding for different types of F# projects. We will also work to offer integrations with other popular tools created by community such as FSharpLint and Fantomas. There are also many possible expansions of the core language services – finding references and symbols across an entire project, or adding support for CodeLens feature of Visual Studio Code. Together, we will build and grow a more vibrant and powerful F# cross-platform ecosystem.

Contributing to Ionide

Ionide is open source project hosted on GitHub under an MIT license. We accept pull requests, new feature proposals, and any suggestions on how we can make Ionide better!

Tags

Join the conversation

How awesome is F#? Pretty F#'n awesome. Haha, I just made that up. That should be a shirt. 😛 Seriously, when F# gets the likes of ReSharper support/magic, C# had better watch out. This is also pretty cool, too: http://websharper.com/

But I digress, am I understanding that you guys made a plugin for Visual Studio Code that takes another IDE and uses that instead of the built-in Code IDE engine? If so, THAT is pretty impressive. This is cool to see.

Visual Studio Code is a great and awesome idea/product too, but unfortunately it is completely horking up the Visual Studio ecosystem. Toooooo many growing pains and competing, incompatible interests and those who have been coding w/ VS for the past decade are paying for it. Don't get me wrong, I (and everyone, really) love the direction here, but us veterans are having to foot the bill. MSFT should really innovate this to make everyone happy. I know you got it in you. 🙂

@Mike-EEE "am I understanding that you guys made a plugin for Visual Studio Code that takes another IDE and uses that instead of the built-in Code IDE engine"

Unfortunately, it's not as cool – we've had to port all features we've had for Atom support to VS Code. While both editors share same technology under the hood, they have completely different extensions API. But we try to provide compatibility on feature level (commands names, commands behaviors, keyboard shortcuts etc).

@Dev "Will it be possible to use it for WPF development?"

It's possible right now… if You can develop WPF applications without preview window and rich XAML support. 😉