[Monodevelop-devel] Working on the monodevelop dom after 2.2

Mike Krüger mkrueger at novell.com
Tue Sep 22 08:08:58 EDT 2009


Currently we've two DOMs: 

MonoDevelop DOM
Language specific DOM

The idea of the monodevelop dom is that most parts of the IDE only use
the upper level (namespaces/types/members etc.) of the .NET doms for
some parts (class browser, quick method navigation etc.). This DOM
reflects the capabilities of .NET reflection.

Now some people have the opinion that this limits monodevelop when
supporting non .NET languages and I think they're right.
I see that currently the main problem is that monodevelop uses the
type->member model.
I would rather suggest working with a tree model instead, adding some
new 'types' to be able to do have a file->member structure.

I would:

+ Replace IDomVisitable with a tree node - each tree node knows it's
parent, children and siblings.

+ Remove compilation unit, replace it with IFile. 

Then it's possible to have file->methods/fields as well as
file->type->methods/members and the class browser/code navigator can
show the new 'model' as well. I don't expect huge changes in the current
code base. The parser database needs to change a bit, but shouldn't
change much.

And I would like to replace the DomLocation with DocumentLocation from
the text editor (or offset based from the text editor) - currently we've
too many ways of representing a location in a file.

Any opinions on that ?


More information about the Monodevelop-devel-list mailing list