The One Place That Hasn't Been Corrupted by Capitalism
Lucid Emacs was released 30 years ago
I can't find the announcement for Lucid Emacs 19.0 in April 1992, possibly because I posted that to gnu.emacs.announce and RMS deleted it, but here's the announcement for 19.1 in June 1992, 30 years and 2 months ago:
Subject: Lucid GNU Emacs 19.1 now available
From: jwz@LUCID.COM (Jamie Zawinski)
Date: 4 Jun 92 17:27:18 GMT
uunet! charon.amdahl.com! pacbell.com! mips! swrinde! zaphod.mps. ohio-state.edu! sol.ctr. columbia.edu! ucselx! bionet! LUCID.COM! jwz
Lucid GNU Emacs 19.1 is now available. This is a version of GNU Emacs derived from an early version of Emacs version 19 from the Free Software Foundation.
You can get it via anonymous FTP from the host labrea.Stanford.EDU (188.8.131.52).
It is currently available only by FTP. We don't have the manpower to make tapes right now.
Log in with the user "anonymous" and "username@host" as a password (that is, your email address.) Execute the command "cd pub/gnu/lucid/". These are the files you will find there:
The complete source distribution. This file is about 8 megabytes. When untarred and uncompressed, the source distribution will take up about 20 megs. You will need an additional 12 megs or so to compile it.
This is a ready-to-run set of Sun4 executables, and a DOC file. If you want to use these executables, you will still need to get the file lemacs-19.1.tar.Z, because Emacs cannot function very well without the lisp library online. This file is about 2.3 megs, 4.7 megs when unpacked, 3.6 megs of which is the Emacs executable itself. This executable was compiled with -g, so that if you have a crash, the core file will be useful to us. If you "strip" it, it will be 2.1 megs (but if you're going to do that, you might as well recompile with -O.)
Don't forget to set "binary" mode when transferring these files. Unpack them with some variation of the command "zcat lemacs-19.1.tar.Z | tar -vxf -".
We have created two mailing lists for discussing our Emacs.
firstname.lastname@example.org For reporting bugs in Lucid GNU Emacs.
email@example.com For random questions and conversation about Lucid GNU Emacs.
For messages ABOUT the bug-lucid-emacs and help-lucid-emacs mailing lists (subscription requests, mail problems, etc.) If you want to be added to or removed from a mailing list, send mail to the corresponding "-request" address. Do NOT send such messages to the list itself.
If the mailing lists get sufficiently large, we may create corresponding newsgroups.
Please do NOT send messages about problems with Lucid GNU Emacs to the FSF GNU Emacs newsgroups and mailing lists (help-gnu-emacs@
prep.ai.mit.edu, bug-gnu-emacs@ prep.ai.mit.edu, gnu.emacs.help, gnu.emacs.bug, et cetera) unless you are sure that the problem you are reporting is a problem with both versions of GNU Emacs. People who aren't subscribed to the Lucid GNU Emacs mailing lists most likely are not interested in hearing about problems with it.
Why Another Version of Emacs?
Lucid's latest product, Energize, is a C/C++ development environment. Rather than invent (and force our users to learn) a new user-interface, we chose to build part of our environment on top of the world's best editor, GNU Emacs. (Though our product is commercial, the work we did on GNU Emacs is free software, and is useful without having to purchase our product.)
We needed a version of Emacs with mouse-sensitive regions, multiple fonts, the ability to mark sections of a buffer as read-only, the ability to detect which parts of a buffer has been modified, and many other features.
Why Not Epoch?
For our purposes, the existing version of Epoch was not sufficient; it did not allow us to put arbitrary pixmaps/icons in buffers, `undo' did not restore changes to regions, regions did not overlap and merge their attributes in the way we needed, and several other things.
We could have devoted our time to making Epoch do what we needed (and, in fact, we spent some time doing that) but, since the FSF planned to include Epoch-like features in their version 19, we decided that our efforts would be better spent improving Emacs19 instead of Epoch.
Our original hope was that our changes to Emacs would be incorporated into the "official" v19. However, scheduling conflicts arose, and we found that, given the amount of work still remaining to be done, we didn't have time to merge with the FSF's code. Consequently, we are releasing our work as a forked branch of Emacs, instead of delaying any longer.
Lucid GNU Emacs is distributed under exactly the same terms as GNU Emacs, and thus has no warranty of any kind. (However, Energize support contracts include Lucid GNU Emacs support.) We do not currently have plans to sell support for Emacs independent of support for Energize.
Lucid GNU Emacs *currently* requires X Windows to run, though it will not be much work to make it run on dumb ttys again. We plan to do this soon.
We have not yet tried to compile this version of Emacs under anything but SunOS 4.1 on SparcStations. We are very eager to get feedback about portability problems from those who compile it on other systems.
We have reimplemented the basic input model in a more general way; instead of X input being a special-case of the normal ASCII input stream, Emacs has a concept of "input events", and ASCII characters are a subset of that. The events that Emacs knows about are not X events, but are a generalization of them, so that Emacs can eventually be ported to different window systems.
We have reimplemented keymaps so that sequences of events can be stored into them instead of just ASCII codes; it is possible to, for example, bind different commands to each of the chords Control-h, Control-H, Backspace, Control-Backspace, and Super-Shift-Backspace. Key bindings, function key bindings, and mouse bindings live in the same keymaps.
You can have multiple X Windows ("screens" in Emacs terminology).
Our Emacs has objects called "extents" and "faces", which are roughly analogous to Epoch's "buttons," "zones," and "styles." An extent is a region of text (a start position and an end position) and a face is a collection of textual attributes like fonts and colors. Every extent is displayed in some "face", so changing the properties of a face immediately updates the display of all associated extents. Faces can be screen-local: you can have a region of text which displays with completely different attributes when its buffer is viewed from a different X window.
The display attributes of faces may be specified either in lisp or through the X resource manager.
Emacs use the MIT "Xt" toolkit instead of raw Xlib calls, which makes it be a more well-behaved X citizen (and also improves portability). A result of this is that it is possible to include other Xt "Widgets" in the Emacs window. Also, Emacs understands the standard Xt command-line arguments.
Emacs understands the X11 "Selection" mechanism; it's possible to define and customize selection converter functions and new selection types from elisp, without having to recompile Emacs.
Emacs now supports the Zmacs/Lispm style of region highlighting, where the region between the point and mark is highlighted when in its "active" state.
Emacs has a menubar, whose contents are customizable from emacs-lisp. This menubar looks Motif-ish, but does not require Motif. If you already own Motif, however, you can configure Emacs to use a *real* Motif menubar instead. If you have OpenWindows, you can use a real OpenWindows menubar.
The initial load-path is computed at run-time, instead of at compile-time. This means that if you move the Emacs executable and associated directories to somewhere else, you don't have to recompile anything.
Emacs now supports floating-point numbers.
Emacs now knows about timers directly, instead of them being simulated by a subprocess.
Emacs understands truenames, and can be configured to notice when you are visiting two names of the same file.
If you're running on a sun SparcStation, you can specify sound files for Emacs to play instead of the default X beep.
Much more detail about the differences between Lucid GNU Emacs and Emacs 18 can be found in the file .../etc/NEWS (accessible with ``C-h n''.)
Note that building Lucid GNU Emacs requires an ANSI C compiler, such as gcc.
"We don't have the manpower to make tapes right now."
Hey, look what I found!
If you're wondering what Lucid Energize was, the product that led to the development of Lucid Emacs, it was basically Xcode for Unix in 1992. It was an integrated IDE with as-you-type recompilation. Please enjoy this promotional VHS cassette:
It failed in the marketplace because our target audience mostly still thought that vi and
Did anyone reading this actually use Energize?
Previously, previously, previously, previously, previously, previously, previously, previously, previously, previously.