[MonoDevelop] Better monodoc integration

Lluis Sanchez lluis at ximian.com
Mon Jan 30 13:28:48 EST 2006


El lun, 30-01-2006 a las 18:10 +0100, Jacob Ilsø Christensen escribió:
> Ok, here is the first attempt!
> 
> The service has been renamed to DocumentationService and it implements
> IDocumentationService which again implements IService.
> IDocumentationService is placed in:
> 
> Core/src/MonoDevelop.Projects/MonoDevelop.Projects.Documentation
> 
> MonoDevelop.Projects no longer references MonoDevelop.Documentation
> (but has to reference Monodoc). 

This reference shouldn't be needed. I guess it is due to the HelpTree
property in IDocumentationService which returns a type from Monodoc,
right? Since this property is not used in MonoDevelop.Projects it could
be removed from the interface (but not from the class).

However, MonoDevelop.Ide does use that property. I see two solutions for
this.

      * The easy one: In MonoDevelop.Ide use the class
        DocumentationService instead of IDocumentationService (it is
        possible to reference MonoDevelop.Documentation there).
      * The complex/good one: Move HelpViewer and MonodocTreePad from
        MonoDevelop.Ide to MonoDevelop.Documentation. Move the handling
        of the F1 key from MonoDevelop.SourceEditor to
        MonoDevelop.Documentation.

In any case those changes don't need to be done right now. Removing the
MonoDevelop.Documentation dependency is a first step. Removing the
Monodoc can be done in a later step.

> Instead MonoDevelop.Documentation references MonoDevelop.Projects.
> 
> I have one issue in:
> 
> Core/src/MonoDevelop.Projects/MonoDevelop.Projects.Parser/AssemblyCodeCompletionDatabase.cs
> 
> Here a new instance of MonodocService is made. This is no longer
> possible due to the broken dependency. I need some help as to how to
> resolve this. Maybe it is not necessary as the ServiceManager does
> this?

Yes, the service should be created through the service manager. I'll
take a look at this.

> 
> Apart from that issue is this good to commit (along with the mandatory
> ChangeLog files... :-) )?
> 
> /Jacob
> 
> On 1/29/06, Jacob Ilsø Christensen <jacobilsoe at gmail.com> wrote:
>         
>         
>         On 1/29/06, Lluis Sanchez <lluis at ximian.com> wrote:
>                 El sáb, 28-01-2006 a las 18:15 +0100, Jacob Ilsø
>                 Christensen escribió:
>                 > Hi.
>                 >
>                 > In current MonoDevelop hitting F1 will always show
>                 help for the type
>                 > of the item the cursor is at instead of showing help
>                 for the item 
>                 > itself. I have begun working on a patch to make sure
>                 that the correct
>                 > help will always be shown. I have attached some
>                 preliminary work and
>                 > would like some comments as to whether this is the
>                 way to go. 
>                 >
>                 > A few things:
>                 >
>                 > I have made it the responsibility of the
>                 MonodocService to translate
>                 > ILanguageItems into a relevant monodoc "help url".
>                 For this I needed
>                 > to add a reference from the
>                 MonoDevelop.Documentation assembly to the
>                 > MonoDevelop.Projects assemby. Is this reference ok?
>                 
>                 I think that the approach is good, but the problem is
>                 that
>                 MonoDevelop.Projects already has a reference to
>                 MonoDevelop.Documentation, and we can't add a circular
>                 reference.
>         
>         Ahh, didn't see that. 
>         
>         
>                 I propose the following solution:
>                       * Add in MonoDevelop.Projects a new interface
>                 named 
>                         IDocumentationService, which defines the same
>                 methods as in
>                         MonodocService.
>                       * Replace MonodocService by
>                 IDocumentationService in
>                         MonoDevelop.Projects, and remove the reference
>                 to 
>                         MonoDevelop.Documentation.
>                       * In MonoDevelop.Documentation add a reference
>                 to
>                         MonoDevelop.Projects and make MonodocService
>                 implement
>                         IDocumentationService.
>                 
>                 This would fix the issue.
>         
>         Yes, that will do it. Thanks. 
>         
>         /Jacob
>         
>         
>                 Lluis.
>                 
>                 >
>                 > There is in MonoDevelop currently some functionality
>                 based on the 
>                 > MonodocResolver method which I will phase out when
>                 the above patch
>                 > stabilizes.
>                 >
>                 > Oh, and don't try to apply the patch since it won't
>                 work due to the
>                 > above reference issue. :-)
>                 > 
>                 > Just wanted the opinion of someone else.
>                 >
>                 > Thanks,
>                 > Jacob
>                 > _______________________________________________
>                 > Monodevelop-list mailing list
>                 > Monodevelop-list at lists.ximian.com
>                 >
>                 http://lists.ximian.com/mailman/listinfo/monodevelop-list
>                 
>         
> 



More information about the Monodevelop-list mailing list