Path: utzoo!mnetor!uunet!husc6!bloom-beacon!think!barmar
From: barmar@think.COM (Barry Margolin)
Newsgroups: comp.lang.lisp
Subject: Re: lisp environments
Message-ID: <13731@think.UUCP>
Date: 15 Dec 87 17:12:38 GMT
References: <487@PT.CS.CMU.EDU> <460@cresswell.quintus.UUCP>
Sender: usenet@think.UUCP
Reply-To: barmar@sauron.think.com.UUCP (Barry Margolin)
Organization: Thinking Machines Corporation, Cambridge, MA
Lines: 48

I'm posting this for a friend who used to work for Symbolics; his
current employer's policy requires him to post this anonymously:

-----------------

As a maintainer of the Symbolics editor subsystem, I did exactly what
the gentleman from the netherlands posits. I edited the source of the
editor in the editor with immediate modification feedback.

In the Symbolics system, all of the language tools used by the compilers
are available to the rest of the system via *dynamic linking*. The editor
maintains a partial parse of the program in an auxiliary data structure.
It uses event counts to update the parse as the user changes the code.
The partial parse handles errors, so that you can have intermediate states
in which the program is invalid, unlike a structure editor. However,
the partial parse permits features like a command that gives the argument
requirements for a function indicated by the mouse, highlighting of errors,
a mouse click which fetches the source of an indicated function or variable,
a mouse click to place a breakpoint in a program, and a set of commands to
step through compiler errors finding the precise point of error. (the compiler
annotates the actual editor representation if you compile a file from the
editor.) These are only the very tip of the iceberg. Its always depressing
to see a bunch of people yammering back and forth with a religious dispute
instead of finding the compromise position right in front of their
noses.

-----------------

Now to my own comments on the subject.  First of all, I have also
edited portions of the Symbolics editor in the editor.  Another
posting mentioned that only structure editors can automatically
provide different commands depending on whether you are editing code
or comments, but the Symbolics editor does a great job of this.  They
have an "Electric Font Lock" and "Electric Shift Lock" modes, which
automatically change the typein font and case depending on whether you
are typing in code, string literals, or comments, and I don't know
what I'd do without "Auto Fill Lisp Comments" and "Fill Long Comment"
when typing block comments.  They don't actually bother changing key
bindings when you are in a comment, but there's no reason they
couldn't.


---
Barry Margolin
Thinking Machines Corp.

barmar@think.com
seismo!think!barmar