Due to restrictions in the Emacs Lisp language, CLOS cannot be
completely supported, and a few functions have been added in place of
EIEIO supports the following features:
- A structured framework for the creation of basic classes with attributes
and methods using singular inheritance similar to CLOS.
- Type checking, and slot unbinding.
- Method definitions similar to CLOS.
- Simple and complex class browsers.
- Edebug support for methods.
- Imenu updates.
- Byte compilation support of methods.
- Help system extensions for classes and methods.
- Automatic texinfo documentation generator.
- Several base classes for interesting tasks.
- Simple test suite.
- Public and private classifications for slots (extensions to CLOS)
- Customization support in a class (extension to CLOS)
Here are some CLOS features that EIEIO presently lacks:
defclass tag support
- All CLOS tags are currently supported, but the following are not
currently implemented correctly:
- There is only one base superclass for all EIEIO classes, which is
- Each slot has an
:initarg tag, so this is not really necessary.
- Mock object initializers
- Each class contains a mock object used for fast initialization of
instantiated objects. Using functions with side effects on object slot
values can potentially cause modifications in the mock object. EIEIO
should use a deep copy but currently does not.
:around method tag
- This CLOS method tag is non-functional.