Visual Studio Code

On Wednesday, during Microsoft Build, Microsoft announced a new code editor called Visual Studio Code. Not an IDE, Code is a full-featured code editor that appears to be based off of the same technology that drives the Atom editor, called Electron. Since it’s running mostly on web technologies, Code will run on Windows, OS X, and Linux.

Code promises to support many different technologies and platforms; at a glance, one could assume the most interesting thing to a C♯ developer like myself may be writing C♯ on OS X. Since I so often work with content management systems, that’s not (usually) an option for me. What appealed to me was the Node.js support and IntelliSense.

Intellisense

IntelliSense is code completion that just works, and works really well. It is eery how intelligent it is, and you’ll find that most Windows developers – even really good ones – are absolutely crippled without IntelliSense. In fact, when I was teaching a coworker how to write Objective-C and work in Xcode, he had more problems with the lack of IntelliSense than he did with the vastly different language.

IntelliSense demo

What’s great about IntelliSense for Node is that it supports the basic Node API. What’s a bummer, though, is that it doesn’t support Express[1], nor does it seem to do the best job with general JavaScript code completion:

Broken IntelliSense

Clearly there’s room for improvement.

Debugging

What I do love, however, is having a true, robust debugger for Node.

I’ve discussed debuggers such as node-inspector in the past. I’m no stranger to debugging by way of logging messages, but that doesn’t necessarily mean I enjoy doing so. Having a true debugger available for my use is a huge productivity boost. Code includes a Node debugger, and it’s great.

This example doesn’t make it seem terribly responsive, but to be fair, I have the entirety of my blog in memory in the array being walked.

Debugger

Markdown

Another nice feature of Code is its built-in Markdown previewer. Since this blog is run on Markdown, I like having even a rough preview right beside me.

Markdown preview

Git

There is also first-class Git integration. I generally prefer to use the command line version of git, but for basic operations it’s convenient to have Git in the sidebar.

Git commit

Miscellany

Right now, there’s very little I don’t care for.

I did have some pretty serious issues getting the debugger working. The debugger requires Mono, which is not packaged with the install. I attempted to install via Homebrew, but that didn’t seem to work. As it turns out, I had two versions of Mono installed, an old one in /usr/bin, and Homebrew’s in /usr/local/bin.

I should note that within half an hour of sharing my frustration on Twitter, I got a helpful reply from Chris Dias:

This may not seem that remarkable, but:

  • This was within an hour or two of Code being available.
  • Chris Dias is a program manager on the Code team
  • He’s the guy in the introductory video on the Code website

That’s some pretty frikkin’ stellar support.

Additionally, I haven’t had the time to explore the depths of Code. There are a ton of other nice features that can be explored. Many of them are featured on the Editing Evolved page on the Code website.

I also haven’t had the time yet to play with doing C♯ development natively on OS X using Code and the new, open-source .NET components. Since so much of my day job involves integrations with many other systems, especially CMSes, it’s not likely I’ll be able to escape my virtual machine.

All told, Code may or may not be for you, but it’s working out really nicely for me so far. I definitely suggest giving it a shot.


  1. UPDATED 1 May 2015 5:45 PM: I’ve now been able to get IntelliSense support for Express, Underscore, Sugar, and Handlebars thanks to the type definitions found at Definitely Typed.