OK - it looks like I can't sleep, I can't decide whether it is because I have this code builder stuff on my mind and I want to get the idea out there properly or because of how angry I am that our Australian basket ball team managed to let the US crawl back up and eventually get 10+ in front of us by the time the final whistle was ready to blow (actually - I don't know that for sure, I turned off in disgust about two minutes from the end).

Anyway - I may as well take this opportunity to air some more thoughts about this code builder idea that I have. I've revised the UI just a tad by extending the existing tool-tip like thing we get under methods when we type in the open bracket. This would give the developer the opportunity to hit F2 (or whatever) to start the builder UI.

One important aspect here is that the F2 is very bold, thats intentional, there is no point building such a cool mechanisms unless your users have to look really hard to find it. The scope of the builder UI has changed quite a bit too based on some of the feedback that I got in the comments of my original post and in the comments section of the post on Ladybug (remember to vote on this suggestion).

The UI has become tabbed and there is potential for more than one builder to be associated with a code element at any one point in time. The reason for the added complexity is that someone made suggestions like loading things from resources - or putting stuff in config files - so I wondered - why not have all of them?

The last tab in the builder UI would be a "configure" tab where you could right there in VS go and browse for an assembly to plug-in. It would be something like the Add/Remove Items option on the VS Toolbox. The interesting implication here is that you don't need to manually edit some file somewhere to figure out how to target a custom builder. That last tab could also integrate with community sites (ala csharp.net) and download a list of builders that have been verified by MS after the product ships.

Once the user has done what they need to do with the builder then they close it down and it does its work (if it wasn't doing it interactively already). The builder would have access to some contextual information, for example, access to the CodeFile so that it could inject whatever it needed to get the job done.

In the example above its actually injected code to grab some data out of the configuration settings to determine what file to load - see it is starting to encourage better coding practices already. The reason I stuck with a literal example is because I wanted to point out how this would work. I would guess that the ordering of the tabs would be based on frequency of use.

Anyway - thats it for now - feeling tired again, maybe it was this stuff.