[comp.sources.d] tenex-style command editing in a Unix shell?

jef@well.sf.ca.us (Jef Poskanzer) (04/25/91)

All these different shells, tcsh, ksh, bash, zsh, but do any of them
implement tenex-style command completion and prompting, the most perfect
command-line interface ever devised?  I admit it would be a little weird
trying to fit it into Unix, since the commands are so numerous and free-form,
but I can think of a couple ways to do it.
---
Jef

  Jef Poskanzer  jef@well.sf.ca.us  {apple, ucbvax, hplabs}!well!jef
  "To downgrade the human mind is bad theology." -- C. K. Chesterton

elliss@kira.egr.msu.edu (Stew Ellis) (04/25/91)

jef@well.sf.ca.us (Jef Poskanzer) writes:

>All these different shells, tcsh, ksh, bash, zsh, but do any of them
>implement tenex-style command completion and prompting, the most perfect
>command-line interface ever devised?  I admit it would be a little weird
>trying to fit it into Unix, since the commands are so numerous and free-form,
>but I can think of a couple ways to do it.
>---
>Jef

>  Jef Poskanzer  jef@well.sf.ca.us  {apple, ucbvax, hplabs}!well!jef
>  "To downgrade the human mind is bad theology." -- C. K. Chesterton

I assume by "tenex-style" you mean using the spacebar and ?.  I have not 
found any like that.  I would really like that as well.  The closest I have
found so far is tcsh, which completes commands or filenames using the tab
key.  I believe some of the others may have a similar capability.  tcsh may
also be able to prompt with possible completions.  For filenames late 
versions of ksh will list possible completions in response to ESC= i believe.

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

                                             _________________________________
  R.Stewart (Stew) Ellis                    / _______________________________/
  Assoc. Prof. of Social Science           / /      ______  ____________  __
  Dept. of Humanities & Social Science    / /      /___  / / ___  ___  / / /
  1700 W. Third Avenue                   / /          / / / /  / /  / / / /
  Flint, MI 48504                       / /__________/ / / /  / /  / / / /
  313-762-9765 Office                  /______________/ /_/  /_/  /_/ /_/

  elliss@frith.egr.msu.edu            ENGINEERING & MANAGEMENT INSTITUTE        

  "Apple Macintosh, the closed system for people with supposedly open minds."
    - plagiarized from someone else on the net
  "How you gonna do it? OS/2 it!" - stupid IBM ad 
  "Have you ever heard anything so half-OSsed?" - me

les@chinet.chi.il.us (Leslie Mikesell) (04/26/91)

In article <24410@well.sf.ca.us> Jef Poskanzer <jef@well.sf.ca.us> writes:
>All these different shells, tcsh, ksh, bash, zsh, but do any of them
>implement tenex-style command completion and prompting, the most perfect
>command-line interface ever devised?  I admit it would be a little weird
>trying to fit it into Unix, since the commands are so numerous and free-form,
>but I can think of a couple ways to do it.

Is that what the kermit command line interface is supposed to emulate? It
runs on lots of platforms, but the code is a nightmare of #ifdef's regarding
the tty i/o.
Does the real thing give an error message when you have typo and then
take the next thing as the beginning of a new line even though you
didn't hit return there?
E.g. you mean to type: "set rec pack 1000", but instead hit "fet":
?Invalid - fet
rec pac
Escape back to your local kermit and prepare to send now.

I hate it when that happens...

Les Mikesell
  les@chinet.chi.il.us
Esca 

pplacewa@bbn.com (Paul Placeway) (05/01/91)

jef@well.sf.ca.us (Jef Poskanzer) writes:

< All these different shells, tcsh, ksh, bash, zsh, but do any of them
< implement tenex-style command completion and prompting, the most perfect
< command-line interface ever devised?  I admit it would be a little weird
< trying to fit it into Unix, since the commands are so numerous and free-form,
< but I can think of a couple ways to do it.

I had this going in a version of tcsh quite a while ago (like around
'85) but it had several problems.  To do tenex/twenex style completion
and listing it had to have a dynamically loadable parser in order to
figure out what was going on, and someone (me) had to write the rules
for each of the commands, including a short explanation of what each
switch did.  I ended up writing parser descriptions of about 10
commands (including BSD 4.2 ls) to try it out.

On our VAX 11/780, it was way too slow to be reasonable (which is a
curable thing), and worst of all it didn't seem to be that much of a
help.

The big problem is that Unix commands wern't built to run under such a
user interface, and they arn't structured, and they were generally
chosen so they could be typed fast, so rather than having nice
structured commands like

	$ DIRECTORY /VERBOSE
(which could be abbreviated "D /V")

You end up with

	% ls -l

And to find out about things

And then if you really want fun, just think about how to explain dd(1)
in 24 lines or less.

It turned out (at least at the time) that it was almost as good just
to have a fast way of running man on the command of the line the user
is typing in, and then returning to the line as it was.  Hence the
tcsh M-? hack.

Unix commands are cryptic "for historical reasons".  As far as a good
system for beginners, forget Unix and go get a toy (read PC w/windows
or a Mac or something).

		--P

"Unix is so cryptic -- you have to type 'ls' to do a 'd'." -- Lum Johnson