emacs-devel
[Top][All Lists]
Advanced

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

Re: [cedet-eieio] Cleaning up the EIEIO namespace


From: David Engster
Subject: Re: [cedet-eieio] Cleaning up the EIEIO namespace
Date: Tue, 19 Feb 2013 20:49:02 +0100
User-agent: Gnus/5.130006 (Ma Gnus v0.6) Emacs/24.2.93 (gnu/linux)

Stefan Monnier writes:
>> I meant a compat package in CEDET upstream, so that it can run on older
>> Emacsen if we stop shipping our own EIEIO version.  As long as we're
>> obsolete-aliasing the old names, I don't see why we would need a compat
>> package in Emacs?
>
> Only if we can hope to get rid of those aliases soon, because we'd
> rather not have those compatibility aliases use up the namespace even
> when all the packages in use have been updated to use the "clean" names.

Well, you've started aliasing `class-name' in your patch, so I thought
that was the plan.

> For the CL package we solved this problem by leaving the "cl.el" package
> as a "compatibility package" only required by the packages that haven't
> been updated to use the new names.  CL was so widely used that it will
> take a *long* time to get rid of all uses of the old names, whereas
> EIEIO's use is not as pervasive, so we don't necessarily have to do the
> same for it.
> This said, maybe it would make sense to move "eieio.el" to "cl-eieio.el"
> (with clean names, autoloaded from cl-lib) and then make eieio.el
> into a simple compatibility package full of aliases.

What to do with the other files like eieio-base then? We cannot rename
it to cl-eieio-base.el because of name clashes, but it also provides
part of the public, CLOS-like functions.

To summarize the options so far:

1) Prefix everything with eieio- and be done with it. Create obsolete
   aliases for the old names and get rid of them "soon" (Emacs
   25?). Alternatively, create an eieio-compat package with aliases for
   the old names.

2) Prefix everything with eieio- and create cl- aliases for the
   CLOS-like functionality. Those aliases may be defined in

   2a) the eieio* files itself, or
   2b) in a separate cl-whatever.el file.

   As in 1), define obsolete aliases for the old names or use a compat
   package.

3) Rename eieio to cl-eieio with clean names (i.e., eieio- and
   cl-prefixes), autoloaded from cl-lib, and make eieio.el a simple
   compatibility package full of aliases.

I'm currently pretty much tied on "2b)+compat package" and 3).

-David



reply via email to

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