C70:editor-people (05/26/82)
>From LAWS@SRI-AI Tue May 25 19:33:54 1982
I am not surprised that authors of successful editing systems each
prefer their own. As a user, I see merits on both sides and would
like to see both systems flourish. My own preferences on particular
features are noted below. Since they are just preferences, it would
seem reasonable that other options be available in the same editor
or at least in other editors on the same operating system.
* I like the character string model of a text file for editing
raw data from tapes and for converting one character set to
another. Unix is built around stream I/O, and it works very
well. The "stream editor" is particularly handy for processing
large text files in some uniform way.
I prefer the quarter-plane model for document editing.
One place it wins is in moving blocks (not full lines) of
text around. Top-level replace mode is best with this model.
(My experience here is with the Rand editor NED.)
For special purposes I prefer a special editor or mode. A LISP
editor is essential for LISP coding, and VisiCalc is excellent
for worksheet computations. For graphic arts or newspaper layout
I would want a formatting editor as in XED or Smalltalk.
* I like an editor that understands my problems and gives me tools
(and a language) for dealing with them. For general text processing
I like the built-in primitives of VI (character, word, "metaword",
line, sentence, paragraph, section, and matching parenthesis
or bracket). Vanilla EMACS is less knowledgeable but more flexible,
particularly in the LISP-based versions: I would prefer it if I were
building a bibliography editor or other special-purpose system.
Even with a smart editor that understands my text I would like
a good cursor system. The vanilla EMACS bindings of ^F, ^B, ^P,
and ^N are exceedingly awkward, and the VI bindings of h, j, k,
and l are not much better. Sometimes I just want to get from here
to there, and many editors make this difficult.
A good cursor system is even more important when the editor does
not understand the text. As an example: Most of my work is done
with word motion and word-oriented commands. In my programming
work, however, I must deal with variable names such as newimghdr
or ImageColumnsPerBlockRow. I have yet to find an editor that can
tab into these composite words intelligently, so I must rely on
cursor motion no matter how clumsy. (With a mouse, of course, I
might prefer cursor motion to all other systems.)
Given that keyboard cursor control is necessary, I think it
integrates best with the quarter-plane model and top-level replace
mode. I should also be able to move the cursor between editor
windows -- other commands should be used to control text scrolling
within a window when more than one window is present.
* I also want to have available a marker system. EMACS offers only
one marker other than the cursor position, and its use is stream-
oriented. NED's marker pair is "block-oriented". SOS offers
multiple line markers (as well as line number addressing). VI
has (invisible) line numbers and multiple markers with both
stream-oriented and line-oriented commands. (VI needs them to
offset the lack of multiple editing windows.) Why can't one
system give me all of the above?
* As for conversion of tabs to spaces (or vice versa): This certainly
should not be mandatory (and no one has suggested that it should be).
For text processing I usually prefer spaces -- adding one character
to a word should not make the next word jump seven spaces. For
tabular work I might prefer tabs. For programming I ordinarily want
things left as they are. Just don't make NED's mistake: conversion
of tabs to spaces only on lines that are actually edited.
Sorry if this sparks a religous war. My thesis is that an editor should
offer every conceivable primitive capability (hard-wired or via extensibility)
and that the user should be able to have any subset easily available. If
only subsets can be implemented then the choice must be made intuitively,
or through controlled studies, or through user surveys. I have cast my
votes above.
-- Ken Laws
-------
C70:editor-people (05/27/82)
>From C70:daemon Thu May 27 02:54:46 1982
*from: BOB (Bob Frankston)
Local: editor-people at mit-ai
Original-date: 23 MAY 1982 18:16:56
Remailed-date: 27 May 1982 0004-PDT
Remailed-from: J.Q. Johnson <Admin.JQJ at SU-SCORE>
Remailed-to: Editor People: ;
Seeing the latest cruft coming by, I thought I should add a few
(brief?) comments:
1. I can't find the arrows on most keyboards with my
fingers, but I can find keys with mnemonic associations
on the home keys (Next/Previous, Backwards/Forwards).
I switch keybroads alot -- typically using on with each
hand.
2. For the EMACS I implemented on Prime, I have both 2d
mode and 1d mode. Typically I run in 1d mode, but edit
tables using 2d mode in conjunction with replace mode.
3. I have only limited sympathy for trying to offload
echoing to the terminal since computers are getting
quite cheap. Unfortunately, packet charges on networks
are such that it is probably cheaper to dialup cross
country than use a packet net for Emacs,
Thus local echoing has a value. Multics echo
negotiation appears to be a reasonable attempt at this.
The echoing is done by a separate communications
processor which can be located near the terminal and is
given a simple rule such as echo until you see "n"
characters or see a nongraphic. It should be possible
to specify a set of tables or choose one so that people
can rebind keys without being stuck with the wired in
bindings. If one rebinds alot of keys (to implement
replace mode for example) one might not be able to use
a general purpose approach, though the editor should
know about the common ones to optimize them. The basic
rinicple is taht these optimization should help in
common cases but should not restrict what can be done
if the user is willing to accept less efficiency.
Ideally the degradation should be gradual so that
rebinding the "A" key does not prevent the use of any
local echoing.
C70:editor-people (06/01/82)
>From Greenberg.Symbolics@MIT-MULTICS Tue Jun 1 13:05:00 1982
Echo negotiation as designed and implemented on Multics resends
a bitmap of what of 128 characters are breaks at the first
call to echo-negotiatedly read after rebindings have been done.
Thus, switching buffers and modes back and forth in an extension
does not cause this to happen until it is time to actually read.
There is no more expense involved with making "A" a break character
than Carriage Return. EVEN THE LISP-LEVEL EXTENSION WRITER is not
aware, and need not be, of echo-negotiation.