Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LISPED (first structure editor in 1966) #14

Open
shaunlebron opened this issue Jan 8, 2018 · 2 comments
Open

LISPED (first structure editor in 1966) #14

shaunlebron opened this issue Jan 8, 2018 · 2 comments

Comments

@shaunlebron
Copy link
Owner

shaunlebron commented Jan 8, 2018

Mark H. David recently emailed me with a link to Lowell Hawkinson's LISPED editor, to clarify that it was the first structure editor for Lisp, before the BBN Teletype Editor came out:

  • 1966 - LISP Editor Program LISPED
  • 1967 - BBN Teletype Editor

From Lowell in 2010, in an email exchanged with Paul McJones:

Early in the Lisp 2 effort, I implemented an online Lisp code editor called Lisped on the Q32. Lisped, used at SDC for perhaps 8-10 years, edited Lisp code based on its structure, not on its text file representation. I heard from someone some years ago that Lisped was credited by Herbert Stoyan as being the first "structural" editor for any computer language.

In terms of the experience for running it, you enter through a parent program called LISPEDIT, which allows you to read, execute, and perform various other high-level file operations.

The STRINGEDIT program is the actual structure editor that is entered when editing a file or creating a new one.

Token Strings

Interestingly, the program converts a file's s-expressions to token strings for operating on. You can see some example conversions below:

screen shot 2018-01-08 at 3 41 01 pm

Editor Focus

The current focus of the editor (like a cursor or selection) is called the object fragment. All commands operate on the object fragment, and allow you to change your selection by manipulating the the LB and RB pointers (left and right boundaries). In the diagram below, the t represents any token.

screen shot 2018-01-08 at 3 50 55 pm

The diagram also defines directionality in terms of moving toward either the head or the tail of a string (file):

screen shot 2018-01-08 at 3 51 42 pm

Structured Navigation

There are some interesting commands for changing the focus (object fragment) in a structured way:

  • NEXT - LB swaps with RB, and RB is moved to tail
  • ONEXPR - shrinks or extends RB to encompass the smallest possible expression
  • ADVANCE - move LB forward or back
  • EXTEND - move RB forward or back

Structured Modification

I can't seem to find any commands that insert or remove parens in pairs, or to move parens across expressions.

@drudru
Copy link

drudru commented Oct 30, 2023

Also, Peter L. Deutsch (famous programmer in early Lisp days and Ghostscript creator),
https://interlisp.org/medley/history/timeline/
if you search for 'structure editor', it briefly describes his system.
It is not as notable as above, but it was 1968.
You may be able to email him for more info.

@simon-brooke
Copy link

simon-brooke commented Oct 30, 2023 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants