Tuesday, October 28, 2008

Oslo's Intellipad Scripted with IronPython

The Microsoft PDC conference is in full swing and there are various pieces of IronPython / Dynamic Language Runtime related news adding to the backlog of things I need to post. (C# 4 becoming a dynamic language through the DLR, preview of IronPython integration in Visual Studio 10 and so on.)

One interesting snippet is that the Intellipad tool, part of the Oslo framework, is scripted with IronPython.

Oslo is a modelling platform "that aim to significantly simplify designing, building, managing and scaling service-oriented and composite applications that can span from the enterprise to the Internet". It includes a new declarative language called "M" "for working with data and building domain models".

UPDATE: Martin Fowler has a new blog entry covering Oslo in more depth.

Intellipad is inspired by Emacs, and in fact had the codename "Emacs.NET". It is user scripted with IronPython instead of Lisp. Online material is hard to find, but this page has some screenshots.

It looks like Intellipad is useful outside of its Oslo home. Dody Gunawinata described it as "a WPF editor with IronPython crack".
From the readme:

Customizing commands

Almost all commands that are available in Intellipad have been written in Python using the object model exposed by the application. The Python files are scattered inside the Settings directory.

Commands.py contains most of the commands for Intellipad.

Configuration specific commands are placed in their respective directories (Emacs or VI or VisualStudio).

A command definition consists of three parts.
  • A "Executed" function definition, that acts as the command handler and provides the logic for the command
  • An optional "CanExecute" function definition, that determines when the command is enabled
  • A command wireup, that is done by calling the "Common.Command" function. This is the where the Executed and CanExecute are wired together along with the Command Name and default key binding

For the moment, a restart is required for the changes to take effect.


  1. Aha!
    I just removed a change to the wikipedia entry on Duck Typing as someone had added C# 4.0 as Now being Duck Typed too.

    It had been discussed before: here, and I thought they had not read the talk item.

    Is C# 4.0 Released?
    Can it now tackle this example?

    I would be much obliged if you could help me out on this.

    - Paddy.

  2. I'm not sure about your specific example. I'll do an updated blog entry on the dynamic C# 4 features once details become a bit clearer.


Note: only a member of this blog may post a comment.