Getting your C# on with Atom
A precursor
One of the last web projects I did before starting my current gig at Elasticsearch was every developers' dream, 3 week POCO search interface, no fixed scope, have fun.
One of my internal goals of the project was to proof that developing C# on a mac did not have to suck. The team consisted of me and a frontend developer who also worked on OSX and was happiest if all he had to open was Sublime and a terminal.
- nancyfx application
- hosted in OWIN self host (Helios in production)
- Octopus deploy
- grunt to build everything
- grunt watch to build on the fly
- OmniSharp to develop C# using VIM
The project was a ton of fun but setting all the moving pieces up was a major pain. Grunt builds were tedious and prone to KILL
itself. ASP vNEXT simplifies everything soo much and having been through the pain of doing it manually having a framework that solves running, watching, building is something that has me super super excited.
Another big take away of the project was how simply awesome OmniSharp was. Developing in my vim with autocompletion and live error feedback? HECK TO THE YES
!
Whenever I needed to debug I moved to Xamarin which is awesome as an IDE and debugger but as an editor still lacks behind. This was before all the recent awesome additions should as being able to dock windows next to each other.
OmniSharp
Some months ago an intern at Microsoft started a Sublime plugin Kulture using Roslyn
to get intellissense and aspvnext commands directly in sublime.
In one of the issues on Kulture the general consensus however quickly became editors need to standardize on OmniSharp and a Skype session was started with everyone involved.
I joined but did not commit to anything, however the weekend after I started hacking in Atom and was pleasantly surprised.
First of all Atom's plugin development is a joy. Being able to leverage all my web development smarts to extend my editor? HECK YES!
Move over VIMScript! After that Omnisharp-atom was born!
Shortly after Stephen James hopped aboard and implemented several features and did a awesome job abstracting implementing new features.
Right now the feature scope is still very limited:
- ctrl-F12 Go to definition
- shift-F12 Find usages
- Completions appear as you type. To select an item, press the TAB key.
- Editor adornments (squiggles) appear for errors and code hints as you type.
Although in master
Stephen James also pushed support for Format Code
and Fix Usings
which will be released very soon!
As an OmniSharp editor feature wise we lack behind on the sublime plugin (honestly Jonathan Channon is a beast!) the atom omnisharp plugin has a very sound foundation!
If you use Atom and C# we urge you to play with Omnisharp-atom, use it anger, help us build out more and more features but most importantly have fun!
Too much has been said about opensource and microsoft: with crossplatform and multi editor support for our beloved language my biggest hope for the future is that we as a community put the fun
back into C# development!
Further reading:
- Scott Hanselman's blog post
- Jonathan Channon on omnisharp-sublime
- Matthew McLoughlin on omnisharp-brackets
Comments
Comments on this post are linked to this post's issue page on GitHub