[comp.lang.misc] What is Emacs written in?

sommar@enea.se (Erland Sommarskog) (04/01/91)

Also sprach Douglas E. Quale (quale@saavik.cs.wisc.edu):
>Emacs is written in elisp.

I did 
   cat *.c *.h | wc
on /usr/gnu/src/emacs/src and found almost 70.000 lines. If it's
not Emacs, what is it? TPU? :-)

cat *.el | wc on /usr/gnu/src/emacs/lisp revealed 55.000 lines.
However, are any of these 55.000 lines are linked into /usr/gnu/
bin/emacs? How many are really kernel-emacs, and how many are
just the editing interface, and special-packages like electric-c?
-- 
Erland Sommarskog - ENEA Data, Stockholm - sommar@enea.se

barmar@think.com (Barry Margolin) (04/02/91)

In article <3114@enea.se> sommar@enea.se (Erland Sommarskog) writes:
>cat *.el | wc on /usr/gnu/src/emacs/lisp revealed 55.000 lines.
>However, are any of these 55.000 lines are linked into /usr/gnu/
>bin/emacs? 

Many of those files are loaded prior to unexec'ing bin/emacs.  I don't know
how many, though; you could probably determine this by looking at the
makefile or build script.

>	    How many are really kernel-emacs, and how many are
>just the editing interface, and special-packages like electric-c?

I guess the problem is that there is no clear agreement on what is
"kernel-emacs".  To me, part of the definition of Emacs is that the default
binding of meta-B (for instance) is to move the cursor backward by a word;
i.e. I consider the simple word motion commands to be part of the Emacs
kernel.  In GNU Emacs, backward-word is written in Elisp.

I also find your reference to "*just* the editing interface" curious.
Emacs is primarily an editor, so the editing interface is an important part
of it.  For sure, Emacs is flexible enough that extension packages can
bypass the normal editing interface if they need to, but that doesn't mean
that the normal editing interface isn't part of Emacs.

If GNU Emacs isn't written in Lisp, then PDP-10 EMACS wasn't written in
TECO.  All the display management and interactive keyboard dispatching was
built into TECO itself, and EMACS was simply a bunch of TECO macros which
were stored into the keyboard dispatch table.  But these macros are
themselves the difference between TECO and EMACS.


--
Barry Margolin, Thinking Machines Corp.

barmar@think.com
{uunet,harvard}!think!barmar

sommar@enea.se (Erland Sommarskog) (04/07/91)

Also sprach Barry Margolin (barmar@think.com):
>I also find your reference to "*just* the editing interface" curious.
>Emacs is primarily an editor, so the editing interface is an important part
>of it.

I am not surprised by your comment. I mainly live in the VMS world
with TPU which makes a clear distinction between TPU itself on the
one hand which provides you the tools to write the editing interface
and tis interface on the other. TPU includes a set of built-ins, a 
set of types (integers, buffer, windows, pattern etc.), redrawing 
algorithms and not the least a compiler to compile code in the 
specific VAXTPU language in which you implement the editing interface, 
which for instance provide all key bindings. If you start up TPU 
without neither a section file (compiled VAXTPU) nor a command file
(interpreted VAXTPU) all you get is a blank screen, and CTRL/Y is
the only way out.

The standard editing interface as delivered with VMS is EVE, but
if you like you write your completely own editing interface, and
being somewhat crazy I have done this.

>I guess the problem is that there is no clear agreement on what is
>"kernel-emacs".  To me, part of the definition of Emacs is that the default
>binding of meta-B (for instance) is to move the cursor backward by a word;
>i.e. I consider the simple word motion commands to be part of the Emacs
>kernel.  In GNU Emacs, backward-word is written in Elisp.

Emacs is much fuzzier than TPU, and I would presume that there is
a lot of Lisp code loaded as I write these words (I'm do news on
Unix) which I don't use. Like backward-word for instance. I have
such a function in my editor interface, but since I don't agree
with Stallman on how it should work I have written my own. (My
TPU and Emacs interfaces are roughly equivalent.)
-- 
Erland Sommarskog - ENEA Data, Stockholm - sommar@enea.se
Le fils de maire est en Normandie avec beaucoup de medecins.