Monaco December 2013 Update

There has been an incredible amount of positive response to the initial release of "Monaco" in November. Thank you very much for your excitement and support! 


Our efforts since the launch have been focused on listening to the feedback and fixing the top issues you've reported. Along the way, we also released a handful of new features, so let's take a look.

We've seen quite a few people using Monaco with their ASP.NET applications. We did a little tune up of the C# language service where we now do a much better job understanding and coloring /// comments with XML documentation tags. Prior to the December update we simply treated these as comments and now understand the XML tags and the content within those tags. 

Let's look at the same code in our initial release and with the December update so you can see the improvements side by side.


Most of the new features in December were concentrated on our TypeScript and JavaScript Language Services. 

First up, we now show parameters for JavaScript and TypeScript methods in Quick Outline. For example, activate takes a routeData object, and openLync takes and employee.


This application makes heavy use of AMD modules, and in fact visitorDetail is itself an AMD module. With the December update we now understand the definition and dependencies of these modules.  For example, visitorDetail depends on the dataservice, enums, config, base, and communicator modules. 

An AMD loader such as requireJS will resolve these modules and pass them into the factory function for visitorDetail so can then be referenced within the module. Now we understand the types of the modules being passed in, so I get a tooltip that shows me that dataservice exposes the GetLoggedEmployeeInfo, GetEmployee, GetVisitors, methods plus a bunch more.


And of course, I get a rich IntelliSense experience when coding against these dependencies

We also support Ctrl+Click navigation to the dependent modules.  If I hover over dataservice and Ctrl+Click on it, we will open up the dataservice module in the services directory.

But, how did we know that the services directory was under MyCompany.Visitors.Web slash App?  

We make it easy to define a baseURL similar to the RequireJS baseURL configuration option in the settings files for the workspace.  In December we now support Quick Outline for JSON files so we'll press Ctrl+Shift+O to bring up the outline and we'll search for the JavaSscript settings.


Here you can see that we're telling Monaco we are using AMD style modules and that the baseURL (the root path for all module lookups) is MyCompany.Visitors.Web/App.

With the December update of Monaco we now support the convention of using a file named _references.ts to manage project wide /// references. This single file will make all of these definitions available throughout my workspace so I don’t need a /// reference in every file I want to use a library.

We've had the /// reference snippet for a while, but we've also made it easier to set the path by pressing Ctrl+Space within the snippet to bring up IntelliSense for all TypeScript files found in or beneath the folder the reference is being made.


We've had great support for LESS in Monaco for a while and customers were quite passionate about us also supporting SASS. Fortunately our newest team member Martin was warming up by implementing SASS support.  Here you can see our SASS file along with our console support for building SASS files into CSS files using node-sass.


And, since we're in the console, I thought I would mention that we fixed the bug where nuget wasn't accessible from the command line, despite being in the help list for the console.  Sorry about that!


The last thing I wanted to note today is early support for a high contrast theme in Monaco. You can turn it on just as you can turn on the light and dark themes, from the settings menu.


The beauty of services is that there isn't anything you need to do in order to get these updates. They are live in Azure today so try it out and let us know what you think.


Chris Dias - Monaco Program Manager


Comments (3)

  1. Luís says:

    THANKS! Really nice update!

    Does bower and other node tools work correctly now?

  2. Erich Gamma says:

    The bower issue has been addressed. Not sure what you mean by "other node tools". Our approach is that the user installs the node tools in the version they want to use with npm install. We do not bundle them all (there are few exceptions). For example, if you want to use grunt you have to npm install it.

  3. Konstantin Tarkus says:

    Nice update! As far as I understand, Monaco targets Node.js + JavaScript/TypeScript development platform first, right? Based on the fact that there is a decent IntelliSense (or should I say autocomplete?) JavaScript/TypeScript support, and on the other hand there is currently no IntelliSense support for ASP.NET applications.

Skip to main content