codeslower.com Savor Your Code.

My Oslo Christmas List

Oslo arrived just in time for Halloween, and it brought many more treats than tricks. Now that I've had some time to play with M, Mg, Intellipad, and the rest, I've got a list I'd like to see Santa bring. I've spent the most time with Mg (also known as "MGrammar"), so I'll focus on it.

For those who aren't familiar, a ...

A Zip Implementation in C#

Over on his B# blog, Bart De Smet recently showcased the new Zip method that will be added to LINQ in C# 4.0. He starts by giving an implementation of Zip built out of existing operators and asks for alternatives. This post is about my version.

For those who aren't familiar with Zip, it takes two lists and "zippers" them together. In Haskell, the Prelude zip ...

Syntax Coloring for Your Custom Mg Language with Intellipad

So, you've downloaded the Oslo SDK and you've created your own custom grammar using Mg, but there is one piece missing -- getting Intellipad to automatically provide error highlighting and syntax coloring for you. "Tree Preview Mode" will highlight text in its "DynamicParserMode" buffer, but there isn't a way to tell Intellipad to apply a specific Mg grammar to a specific file. This article will show ...

Exploring Oslo: Using Mg to Define a To-Do Language

Oslo, finally unveiled at this week's PDC is a "tool, a platform and a repository." Two new languages have been shipped so far -- "M" and "Mg" (or MGrammar). This article focuses on Mg.

Mg is a language for defining languages. You define the syntax for your language and it generates various artifacts for you. This article explores using Mg to define a "language" for writing to-do lists ...

Adding Custom Project and Item Templates to Visual Studio 2008

Visual Studio has an extremely rich and complex extensibility model. Recently I have been working on a creating a project "flavor," which extends the Visual C# project system. A project flavor, or subtype, inherits from an existing project. From here on I will refer to this type of project as a project "subtype."

I need to support two areas of customization -- adding a custom project template to the ...