Toby, did you see what I just did!

Today, I was running around with my laptop trying to find someone to show him what I did. My problem was that since I'm working from home, I found no one except my dog... Toby, did you see what I just did! He was looking at me and didn't really care about that I was doing some C# in Atom, a regular text editor. So, here I am now, sharing my discovery with you.

The "What"

While reading some article on the Internet, I fall on a video talking about OmniSharp.
A family of Open Source projects, each with one goal - To enable great .NET development in YOUR editor of choice.
SO I decide to give it a try in one of my favorite text editors this time called Atom.
Less than two minutes after, I was running across my house....

The "How"

What I like about Atom that it is so easy to install and to customize. The easiest way to install it is via Chocolatey.
Chocolatey NuGet is a Machine Package Manager, somewhat like apt-get, but built with Windows in mind.
Assuming that you don't have Chocolatey installed, let's start by that. Open a command prompt (cmd.exe) as Administrator, and execute this command:
@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin

In a new command prompt again with the administrator permission, let's Install the text editor Atom:
cinst Atom

and Git:

cinst Git

Now to install the OmniSharp in Atom you have two options. You could do it through the Settings or using a console. For this post, I will use the second option. Let's open a new command prompt, always as Administrator.
The reason why I use a new prompt every time is to be sure that environment variable gets refreshed.

Execute these command:
apm install language-csharp
apm install autocomplete-plus-async
apm install omnisharp-atom

Now open Atom and let's put some code:
using System;

namespace ConsoleAppDemo
{
    class Program
    {
        static void Main(string[] args)
        {
          var myBook = new Book{Title="Get Started with OmniSharp"};
          Console.WriteLine(String.Format("Here is my review of: {0}", myBook.Title));
        }
    }

    public class Book
    {
      private string _review;

      public string Title{get;set;}

      public string Review{
        get{
          if(String.IsNullOrEmpty(_review))
          {
            _review = "This book is nice";
          }
          return _review;
        }
        set{
          _review = value;
        }
      }
    }
}

Nothing special until you start the OmniSharp server with Ctrl-Alt-o.

Boom!

Atom_Intellicnse


As you can see now the intelisense, completion, code navigation and so more! If you click on the little green flame on the bottom left you see details about notification and error message.

notification


The end


OmniSharp is a frontend compiler, not a complete compiler so it doesn't generate CLI code. But It's already a lot. Today, you can use OmniSharp with Sublime Text 3, Atom, Emacs, Brackets, Vim and with command line only. So whether on your old laptop or your new PC, whether you run Linux, Mac or Windows let's do some C#!


~Frank Boucher