Sign In
Cyrus' Blather
Translate This Page
Translate this page
Powered by
Microsoft® Translator
Options
Blog Home
Email Blog Author
Share this
RSS for posts
Atom
RSS for comments
Search
Advanced search options...
Search In:
Everything
Blogs
Forums
People
Groups
Places
Pages
Date range:
All Time
Last Year
Last 6 Months
Last 3 Months
Last Month
Last Week
Last Two Days
Tags
No tags have been created or used yet.
Archive
Archives
November 2005
(1)
October 2005
(2)
September 2005
(11)
August 2005
(3)
July 2005
(5)
June 2005
(17)
May 2005
(8)
April 2005
(36)
March 2005
(30)
February 2005
(5)
January 2005
(7)
December 2004
(4)
November 2004
(5)
October 2004
(6)
September 2004
(16)
August 2004
(25)
July 2004
(35)
June 2004
(77)
May 2004
(73)
Out with the old, in with the new
MSDN Blogs
>
Cyrus' Blather
>
Out with the old, in with the new
Out with the old, in with the new
CyrusN
15 Dec 2004 10:03 PM
Comments
20
I've had the pleasure of spending a bit of time recently with
Don Syme
during a visit from Cambridge to MS. For those of you who don't know, he was instrumental in the specification and development of generics in the .net runtime and in C# as well, and he's also the creator of
F#
(a CaML port to .net). One of the many things we discussed was the F# langauge service he is working on (which comes as a VS2005 plugin part of the F# distribution). For those who don't know, a "language service" is a package that provides all the language specific knowledge and interactive services to visual studio. This is distinct from the services that the Core IDE provides that is language agnostic (but which might communicate with a language service to get it's job done). For example, the completion list UI is provided wholy by the Core IDE, but it communicates with the C# language service to determine what to display in it and how to do it's completion logic, and it is the C# langauge service that decides when and where it pops up.
The IDE provides the service that tells us when text needs to be recolorized - the language service decides how to colorize it
The IDE provides the code definition window - the language service decides what goes in it
The IDE tells us what the commands the user has invoked - the language services decides if it wants to deal with it and decides if anyone else can deal with it.
etc. etc. etc.
In order for a "language service" package to work it needs to implement several interfaces and then register itself with VS. it doesn't take much but it's not always clear where to start. So, Don and i were discussing the F# language service and where he wanted to go with it, and one of the issues that came up was that he was pretty unhappy since all the samples he found for implementing a language service were in C++ and he was forced out of his pretty ML land into the unpleasant, unsafe, procedural world. I thought that for a start we could make his life nicer by providing a managed implementation that would free him from the need to worry about how he was managing his memory.
This was work that our team had done and it was pretty clear that we could help Don out. What then occurred to us was that "hey, maybe it's not just Don who can be helped out by this!" So over the course of a few posts i'll walk through the steps you'll need to do create your own language service. Which interfaces to implement, how to register your package dll, how to go about creating a colorizer, and even up to registering to listen to user commands so that you can respond to the user's typing and can perform appropriate actions in response. Maybe we can even go into how to communicate with the debugger or interact with the forms designer :)
Hopefully those of you who have a language they love (python, ruby, perl, OCaml, whatever) and woudl like to see that language fully supported in the VS IDE will now have a series of steps they can take to move toward that goal.
Any language nuts in the audience who will want to use this?
20 Comments
Blog - Comment List MSDN TechNet
Comments
Loading...