[MonoDevelop] [PATCH] Fix Improper MemberNodeCommandHandling inClassPad
Jeffrey Stedfast
fejj at novell.com
Fri May 25 06:38:39 EDT 2007
On Fri, 2007-05-25 at 12:22 +0200, Lluis Sanchez wrote:
> Hi,
>
> > When a member in a ClassPad was clicked, the correct source file was
> > not being opened. This patch fixes it by including filename
> > information in all Region objects.
>
> I'm concerned about memory use. If every member of the class has the
> name of the file, that's a lot of duplicated strings in memory, and will
> be noticeable in big projects such as MonoDevelop which has thousands of
> members. I know that the file name string instance is shared at parse
> time, but this info is saved to disk (to pidb files) and later reloaded,
> and when reloaded an instance will be created for each string. That's
> something to take into account.
One possibility is to have the pidb loading code keep a table of unique
FileName strings as they are loaded from disk, and set the instance to
the unique string rather than the one loaded.
>
> > This is my first patch. So please point out any mistakes and omissions.
>
> Always provide patches as an attachment to the mail, since mail readers
> are likely to mess up the formatting.
>
> Thanks!
> Lluis.
>
> >
> > --- monodevelop-0.13.1/Extras/CSharpBinding/Parser/Parser.cs 2007-03-08
> > 04:32:26.000000000 +0530
> > +++ monodevelop-0.13.1.patch/Extras/CSharpBinding/Parser/Parser.cs 2007-05-23
> > 13:53:40.000000000 +0530
> > @@ -95,8 +95,17 @@
> > // FIXME: track api changes
> > //visitor.Cu.ErrorInformation = p.Errors.ErrorInformation;
> > RetrieveRegions (visitor.Cu, p.Lexer.SpecialTracker);
> > - foreach (IClass c in visitor.Cu.Classes)
> > + foreach (IClass c in visitor.Cu.Classes) {
> > c.Region.FileName = fileName;
> > + foreach (IField f in c.Fields)
> > + f.Region.FileName = fileName;
> > + foreach (IMethod m in c.Methods)
> > + m.Region.FileName = fileName;
> > + foreach (IProperty pr in c.Properties)
> > + pr.Region.FileName = fileName;
> > + foreach (IEvent ev in c.Events)
> > + ev.Region.FileName = fileName;
> > + }
> > AddCommentTags (visitor.Cu, p.Lexer.TagComments);
> > return visitor.Cu;
> > }
> >
> >
> > --- md/Core/src/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ClassPad/MemberNodeCommandHandler.cs 2007-03-08
> > 04:31:51.000000000 +0530
> > +++ monodevelop-0.13.1.patch/Core/src/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ClassPad/MemberNodeCommandHandler.cs 2007-05-23
> > 13:52:22.000000000 +0530
> > @@ -39,21 +39,10 @@
> > {
> > public override void ActivateItem ()
> > {
> > - string file = GetFileName ();
> > IMember member = CurrentNode.DataItem as IMember;
> > + string file = member.Region.FileName;
> > int line = member.Region.BeginLine;
> > IdeApp.Workbench.OpenDocument (file, Math.Max (1, line), 1, true);
> > }
> > -
> > - string GetFileName ()
> > - {
> > - IMember member = (IMember) CurrentNode.GetParentDataItem
> > (typeof(IMember), true);
> > - if (member != null && member.Region.FileName != null) return
> > member.Region.FileName;
> > -
> > - ClassData cls = (ClassData) CurrentNode.GetParentDataItem
> > (typeof(ClassData), true);
> > - if (cls != null && cls.Class.Region.FileName != null) return
> > cls.Class.Region.FileName;
> > -
> > - return null;
> > - }
> > }
> > }
> >
> > --- md/Core/src/MonoDevelop.Ide/ChangeLog 2007-03-08 04:31:53.000000000 +0530
> > +++ monodevelop-0.13.1.patch/Core/src/MonoDevelop.Ide/ChangeLog 2007-05-23
> > 14:08:51.000000000 +0530
> > @@ -1,3 +1,7 @@
> > +2007-05-23 Balaji Rao R <balajirrao at gmail.com>
> > + * MonoDevelop.Ide.Gui.Pads.ClassPad/MemberNodeCommandHandler.cs : Made
> > + to obtain FileName information directly from the respective regions.
> > +
> > 2007-02-24 Lluis Sanchez Gual <lluis at novell.com>
> >
> > * MonoDevelop.Ide.addin.xml: Fix compatible version number.
> >
> >
> > --- monodevelop-0.13.1/Extras/CSharpBinding/ChangeLog 2007-03-08
> > 04:32:26.000000000 +0530
> > +++ monodevelop-0.13.1.patch/Extras/CSharpBinding/ChangeLog 2007-05-23
> > 14:04:10.000000000 +0530
> > @@ -1,3 +1,7 @@
> > +2007-05-23 Balaji Rao R <balajirrao at gmail.com>
> > + * Parser/Parser.cs : Include FileName information in all regions
> > + belonging to a class.
> > +
> > 2007-02-16 Lluis Sanchez Gual <lluis at novell.com>
> >
> > * Gui/CSharpTextEditorExtension.cs: Don't show completion windo for
> >
> >
>
> _______________________________________________
> 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