emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Shrinking EIEIO objects


From: David Engster
Subject: Re: Shrinking EIEIO objects
Date: Fri, 02 Jan 2015 12:22:17 +0100
User-agent: Gnus/5.13001 (Ma Gnus v0.10) Emacs/24.3.91 (gnu/linux)

Eric Ludlam writes:
> On 12/30/2014 12:59 PM, Stefan Monnier wrote:
>> Hi Eric,
>>
>> I'd like to install something like the patch below into Emacs's master.
>> What it does (along with various other side changes) is shorten the
>> object header from 3 fields (the constant `object', the class name, and
>> an object "name" field) to just one (an interned symbol with an "eieio-"
>> prefix, referring to the class object).
>
> This seems like a fine idea.  A side effect is that the 'name' slot is
> gone.  There have received a questions about why there is a 'name' for
> objects, and really the main thing was debugging.  When you have piles
> of objects around, naming them makes it much easier to see what is
> going on.   EIEIO objects have a short hand using a #<class name>
> format, and when the various prin1 tools are enabled for edebug, that
> short hand is used in place of the vector.  This is critical when
> debugging semantic databases where the vectors contain thousands of
> symbols.
>
> Your proposed solution will enable the current source forge hosted
> version of CEDET to keep going, just with warning messages, which
> seems fine.
>
> I can convert the sourceforge version CEDET to use make-instance
> instead, which should be compatible before and after your change.

I'm a bit confused. Why would we need to change how we construct our
objects? Most of these changes seem to be purely internal. The only API
change I see (aside from the added eieio-- prefixes) is that NAME is now
optional (but not obsolete), which is certainly a good thing.

> While reading through the patch, there was a bunch of changes related
> to doc strings and methods.  The goal was if you used help on a
> method, such as:
>
> C-h f constructor RET
>
> (or eieio-constructor in your patch)
>
> it should list the core doc (generic) and doc for every class that has
> it's own implementation and custom doc.  I couldn't intuit from the
> patch what might happen as some of the doc strings looked like they
> were removed?

I don't think that has changed. I just tried Emacs with the patch and I
see the "EIEIO-enhanced" docs as usual.

-David



reply via email to

[Prev in Thread] Current Thread [Next in Thread]