[Top][All Lists]

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

eon.el --- object-oriented programming for emacs

From: David O'Toole
Subject: eon.el --- object-oriented programming for emacs
Date: Mon, 03 Sep 2007 23:31:29 -0400
User-agent: Gnus/5.110006 (No Gnus v0.6) Emacs/23.0.50 (gnu/linux)

Recently it became clear that I should factor out some common ideas
that have appeared in most of my emacs lisp programs.

After some Deep Thinking (TM) I decided that what I really want is to
write object-oriented programs in Emacs Lisp, with a lightweight
object model and an easy-to-type syntax for method calls and slot
references. I want persistent objects and a universal browser (based
on cell-mode) with which one can inspect and manipulate any Eon object
or object collection (and that would only be the default view.)

The attached code is my first attempt to implement the core ideas.
(The persistence and UI portions are under construction and will be
added as extensions later.) Design influences include Smalltalk, CLOS,
howm-mode, eev-mode, the Categorizing Information Manager, and others.

There is a working example (admittedly not very exciting) at the end
of the file.

Eon is now the basis for all my other programs, two of which are
slated for inclusion in Emacs at some future date. Comments and
criticisms are welcome.

By the way, you don't have to write object-oriented programs to
benefit from Eon. Instead, you (or someone else) can write a wrapper
for your existing code, and make it possible for users to browse,
discover, manipulate, configure, and share objects whose behaviors
come from your library, without you having to code your user interface
from scratch.

I think this could also help make the user interfaces of different
Emacs packages more "discoverable" and more consistent with each
other. For example, think of how many different programs implement
their own similar-but-different "dired-style" buffer interfaces (where
you can place various marks on items in a list and perform operations
on the marked items.)

Some links to programs in the process of being ported to Eon:

 - The RLX graphical roguelike game engine:

 - The cell-mode user interface:

 - Linkd, the universal annotator/linker thing

The project page for Eon itself is

David O'Toole 

Attachment: eon.el
Description: application/emacs-lisp

reply via email to

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