[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1. Introduction

EIEIO is a CLOS (Common Lisp Object System) compatibility layer. Due to restrictions in the Emacs Lisp language, CLOS cannot be completely supported, and a few functions have been added in place of setf.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.1 What EIEIO supports

  1. A structured framework for the creation of basic classes with attributes and methods using singular inheritance similar to CLOS.
  2. Type checking, and slot unbinding.
  3. Method definitions similar to CLOS.
  4. Simple and complex class browsers.
  5. Edebug support for methods.
  6. Imenu updates.
  7. Byte compilation support of methods.
  8. Help system extentions for classes and methods.
  9. Automatic texinfo documentation generator.
  10. Several base classes for interesting tasks.
  11. Simple test suite.
  12. Public and private classifications for slots (extensions to CLOS)
  13. Customization support in a class (extension to CLOS)

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.2 Issues using EIEIO

Complete defclass tag support

All CLOS tags are currently supported, but some are not currently implemented correctly.

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.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.3 EIEIO example programs that are almost useful.

linemark

Manage line highlighting, where individual lines are given a background color, or some other graphic feature. Lines can be highlighted in files not currently loaded in Emacs. When they are read in, the lines are given the graphic properties.

Includes an MS Visual Studio like bookmark facility.

lmcompile

Using linemark, highlight all lines where the latest compilation has valid hits.

tree

Draw a structured tree by building a series of embedded lists of ‘tree-node’ class objects. Includes the functions ‘eieio-class-tree’ to browse your current eieio inheritance structure

call-tree

Pass it an Emacs Lisp function (not byte compiled) to generate a call tree using the tree tool

chart

Uses eieio to manage charts/axis/sequences, and allows display of simple bar-charts. Example programs are available displaying emacs memory usage and list occupation, in addition to file counts and size charts. There’s even a sample that will display a chart of who sends you the most email! See doc-string for ‘chart-bar-quickie’ to make your own bar charts easily.

eieio-speedbar

Classes for implementing a speedbar display. If you write a program that uses a system of objects, and your classes inherit from those in ‘eieio-speedbar’, then you can write a speedbar display for your objects in very little time. eieio-speedbar


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.4 EIEIO wish list

  1. More CLOS compatibility.
  2. Integrate the desired built-in methods into the object browser.
  3. Create some objects over pre-existing emacs-lisp stuff for fun, like faces, processes, buffers, frames and windows as examples.

[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by Aidan Kehoe on December 27, 2016 using texi2html 1.82.