[net.emacs] our new Emacs

whm.arizona%Rand-Relay@sri-unix.UUCP (10/20/83)

We recently purchased a copy of UniPress Emacs and I thought I'd share
a few comments with the group.

First of all, I was really disappointed with the state of the documentation.
The installation instructions haven't changed much in the last couple
of years and on top of that, they still have some errors.  There were
rumors of UniPress doing a new manual, but the one supplied just seems
to be a reorganization of the old one with a few new things added.
Also, the manual still contains a load of spelling errors, typos and
the like.

I also had high hopes that UniPress had spent some time on cleaning up
the MLisp packages, but of the twenty-odd packages, I discovered
glaring problems in seven of them during a cursory testing session to
ensure that the system worked.  My favorite bug is one in info: You
run info, it instructs you to type an "h", you do so and get to a node
where it says to type "N" to go to the next node.  You type an "N" and
it beeps (or blinks).  The secret is to use lower-case characters
instead of upper-case, but that wasn't immediately obvious.

In the previous version of Emacs that we had (#85), there was a function
called "error-occured".  In #264, the function "error-occured" has
been replaced by "error-occurred".  While I realize that it's probably
not reasonable to expect UniPress to provide compatibility with pre-
UniPress versions of Emacs, and while I realize that whoever made the
change probably did some deliberation as to how to solve such a sticky
problem, I think that some sort of prominent notice of the change would
have been in order; every MLisp program in the house broke.  I ended
up fixing this by adding "error-occured".  It is also interesting to
note that the "Occurances" command is still with us.

Another cutie in the compatibility line is that #85 accepts (e.g.)
	(bind-to-key "backward-char" ...)
as being valid because "backward-char" is a unique prefix of a command,
but this fouls up #264.  I imagine that #85's behavior in this respect
was accidental, but again, some notice of the change would have been
nice.

The file name completion stuff is very nice.  However, the load function
doesn't use it?  Is there some reason for this?

Here's a real killer.  If you make a string that's >~200 characters
long and have its value displayed in the minibuffer, Emacs exits (or
tries to).  A look at the code reveals an array of 200 characters that
is apparently being overrun.  I've been prowling around in the Emacs
source code for the last couple of days (for a project) and there seem
to be several places where it is assumed that MLisp strings are never
more than 200 characters long.  Is this some sort of unwritten law?
The only mention of string length restriction that I can find is an
admonition in the documentation for region-to-string to not use "huge"
strings.

I have a creeping suspicion that Emacs sometimes doesn't free storage
when it should, but I have no solid evidence.  I often see my #264 grow
to 700+ pages (on a VAX), but it seems like #85 usually stayed well
below 500 pages.

Now a suggestion about key bindings in MLisp packages.  I've rebound
almost the entire keypad and whenever I go to use a "standard"
MLisp package I'm consigned to revert to the standard bindings
or make a personal copy of the package and hack up the bindings.
A reasonable solution to this problem (this may well have been
suggested before) seems to be to not use constant values for
the various local key bindings that the packages do.  There seem
to be two alternatives:  Use variables to contain a certain
set of bindings for various keys, e.g.
	(setq NextLine "\^n")
is the standard, and a package might use a binding like:
	(local-bind-to-key "next-item" NextLine)
Or better yet, make a function that returns a string representing
the key sequence a function is bound to.  For example:
	(local-bind-to-key "next-item" (key-binding-of next-line))
Thus, people who wish to rebind keys aren't murdered when they want
to use a package.  The documentation can talk in terms of operations
rather than specific characters.

Several other people have made suggestions about ways to improve
MLisp packages; one of the suggestions that I liked a lot was that
of each MLisp package optionally calling some function to perform
per-user "customization".  The problem with all such suggestions
is that of acceptance and usage.  Right now, UniPress is in a position
where they can influence standardization and increases in quality of
MLisp packages; I hope they make some moves in this direction in
the future.

In summary, I'd say that #264 is a substantial improvement over #85
where the editor proper is concerned, but the documentation and MLisp
packages have changed only slightly.

Along a different line...I've been at two installations where Gosling's
Emacs was (is) available.  At both, Emacs was somewhat of a cultish
item with (I'd guess) less than 10% of the user population using Emacs.
Are these two data points out of the mainstream, or is this the
case at many installations?  Are there any sites where Gosling's Emacs
is the dominant editor?  My hypothesis is that the quality of
documentation is serving as a barrier to widespread use and acceptance.

					Bill Mitchell
					whm.arizona@rand-relay
					{kpno,mcnc,utah-cs}!arizona!whm

thomas%UTAH-GR%utah-cs@sri-unix.UUCP (10/21/83)

From:  thomas%UTAH-GR@utah-cs (Spencer W. Thomas)

Just a few random remarks on your comments about Unipress emacs.  I
think the first release is basically just as they got it from Gosling.
Hopefully, they will clean it up a bit in the future.

It was announced on Unix.Emacs that the name of the error-occurred
function was changing (at least I think it was, maybe that was private
communication with jag), in any case, it is pretty simple to write a
shell+sed script to fix all your .ml files at once.

Nobody uses the file name completion (that I noticed), all you get is
the get-tty-file function, it's up to you to use it.  (Or were there
some top-level functions in the mlisp?)

That problem with 200 character buffers has been in there just FOREVER
- for longer than we've had emacs, anyway.  One of these days I may get
the energy...

Re: your key binding idea.  What about a function which is bound to
more than one key?  Which key do you pick?

BTW, I've got some significant bug fixes for #264, including a couple
nasty ones in the compiler.  If you ever want to bind ESC-^@, you need
these.

=Spencer

phil.rice%Rand-Relay@sri-unix.UUCP (10/21/83)

From:  William LeFebvre <phil.rice@Rand-Relay>

    "Nobody uses the file name completion (that I noticed), all you get is
     the get-tty-file function, it's up to you to use it."

When was the last time you used "visit-file"?  It most certainly uses
file name completion.  File name completion is one of the handiest
things I have ever used.  As my dad would say: "It's the greatest thing
since popcorn"!

I'm sure that there are several other wired functions that use file
name completion in #264 (such as "read-file", "insert-file" and
"unlink-file") and it's easy to change most any MLisp function that
doesn't use it when it asks for a file name.  Just replace
"get-tty-string" with "get-tty-file".

                                William LeFebvre
                                ARPANet: phil.rice@Rand-Relay
                                CSNet:   phil@rice
                                USENet:  ...!lbl-csam!rice!phil

thomas%UTAH-GR%utah-cs@sri-unix.UUCP (10/23/83)

From:  thomas%UTAH-GR@utah-cs (Spencer W. Thomas)

I stand corrected.  Guess I was fooled by the fact that the file-name
completion was not mentioned anywhere I could find it in the manual.

I just dropped it into our already existing mlisp functions.
=Spencer
(BTW, has anybody else noticed the large number of unknown addressees on
this mailing list?)

whm.arizona%Rand-Relay@sri-unix.UUCP (10/24/83)

I've gotten some feedback on my comments and would like to add a few
comments.

It's been about six months since it was announced that UniPress was going
to be distributing Emacs and I would have hoped that in that time, they
would have made some moves towards cleaning up the documentation and
MLisp packages.  It seems like what they're doing is just selling it
as-is.  The package they distribute (not counting the editor itself)
seems closer to what I'd expect from a "send me a tape and I'll send
you a copy" sort of distribution.  UniPress is advertising Emacs in
magazines; that says to me that they must think what they have right
now is in fine shape.

Wrt. to the 200 character buffer problems: Doesn't it seem like that
should be mentioned somewhere?  Seems like a pretty severe restriction
to me.  (200 characters is not my idea of a huge string!)
   
As several people noted, surjective key to function relations do present
a problem to key-binding-of.  How about a function that takes two
functions (a and b), and for each key that is bound to a, establish
a local binding to b.  For example:

   (local-copy-bindings "self-insert" "funky-insert")
   
Several have said that load doesn't use file name completion because
it uses a search path to locate files.  I don't quite see the problem with
this.  Sure, the semantics get tricky when you're dealing with a list of
directories, but the name completion doesn't need to always be used does
it?  I wrote:

	(defun (Load (load (get-tty-file ": Load "))))

and it does what I want.  I just don't see the problem.  If I want it
to go searching along EPATH for foo.ml, I can Load foo, and if I want
to load $elib/foo, I can do that as well.

In response to my query about sites where Emacs is the dominant editor,
I did turn up several such sites.

One other thing, I sent UniPress a letter (via USmail) at about the
same time I posted my original "our new Emacs" message.  I'd encourage
other people to do the same if they aren't satisfied with the way
things seem to be going.

						Bill Mitchell

preece@uicsl.UUCP (10/28/83)

#R:sri-arpa:-1282000:uicsl:21900002:000:591
uicsl!preece    Oct 27 10:12:00 1983

I could be wrong (I haven't looked at sa figures for some time),
but my impression is that emacs is used here more than vi. I suspect
that this reflects the nature of our users (lots of grad students)
and that when we switched to the Vax there were people here with
knowledge of Emacs, so that it got plenty of attention when people
were making their choice.

As to documentation, I didn't find the vi documentation the most useful
thing I've ever read, either.

I do wish it didn't take so much longer for Emacs to start up than for
vi to start up.

scott preece
ihnp4!uiucdcs!uicsl!preece