Intellisense interaction

I noticed a question on the C# faq by David who asks:

---

Is it possible when you type {, (, [, etc. to have the IDE automatically insert the corresponding }, ), ] etc.? Does this exist in VS.NET 2003? Am I just blind?

Would it be possible to have intellisense insert the beginning of the text when list values are the same?

Example:

If you type

System.AppD

and intellisense displays

System.AppDomain
System.AppDomainSetup
System.AppDomainUnloadedException

could the IDE automatically expand it to

System.AddDomain

or possibly if you just hit tab to select AppDomain leave the intellisense selection up if there are others that match?

---

David: there is a new technology called 'snippets' in the editor which allow you to have macro-like expansions that get invoked when you hit tab inside the 2005 IDE. So you could hit 'if' and you would get 'if () { }' with your cursor in between the parenthesis. We supply a default set, but you are free to create your own. Would this help?

Also, Kevin worked on something called 'Shell style completion' which would have this behavior when dealing with completion lists, however, it's not in the community preview we just released. Given the choice of us providing certain completion-styles, versus us opening an API which you could plug into to define your own style, which would you prefer?