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: http://dto.freeshell.org/notebook/RogueLike.html - The cell-mode user interface: http://dto.freeshell.org/notebook/CellMode.html - Linkd, the universal annotator/linker thing http://dto.freeshell.org/notebook/Linkd.html The project page for Eon itself is http://dto.freeshell.org/notebook/Eon.html -- David O'Toole [EMAIL PROTECTED] http://dto.freeshell.org/notebook/
eon.el
Description: application/emacs-lisp
_______________________________________________ gnu-emacs-sources mailing list [email protected] http://lists.gnu.org/mailman/listinfo/gnu-emacs-sources
