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.
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:
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.
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.
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.
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:
@caseyliss
@code
don't give up! brew uninstall mono, brew tap aspnet/dnx,
brew install dnvm will give you mono 4.0.1/asp.net
— Chris Dias (@chrisdias)
April 29, 2015
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.
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. ↩