Open shaunlebron opened 6 years ago
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.
Thank you for this! This is new to me and very happy interesting. I'll maybe implement an editor based on this for Beowulf!
Cheers
Simon
On Mon, 8 Jan 2018, 22:00 Shaun Lebron, @.***> wrote:
Mark H. David recently emailed me with a link to Lowell Hawkinson's LISPED editor http://www.softwarepreservation.org/projects/LISP/lisp2/TM-2710-100-01-LISPED.pdf, 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
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:
[image: screen shot 2018-01-08 at 3 41 01 pm] https://user-images.githubusercontent.com/116838/34693813-a5be50ce-f48a-11e7-8f65-500c4763b887.png 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.
[image: screen shot 2018-01-08 at 3 50 55 pm] https://user-images.githubusercontent.com/116838/34694185-c31b4bf8-f48b-11e7-8e99-6b1dd388531f.png
The diagram also defines directionality in terms of moving toward either the head or the tail of a string (file):
[image: screen shot 2018-01-08 at 3 51 42 pm] https://user-images.githubusercontent.com/116838/34694431-b2e94996-f48c-11e7-84e1-71547516d2a1.png 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.
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/shaunlebron/history-of-lisp-parens/issues/14, or mute the thread https://github.com/notifications/unsubscribe-auth/AFPvW1pAMVUudmSsRVxvUazcE9XV72b5ks5tIpADgaJpZM4RXA-R .
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:
From Lowell in 2010, in an email exchanged with Paul McJones:
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:
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
andRB
pointers (left and right boundaries). In the diagram below, thet
represents any token.The diagram also defines directionality in terms of moving toward either the head or the tail of a string (file):
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 tailONEXPR
- shrinks or extends RB to encompass the smallest possible expressionADVANCE
- move LB forward or backEXTEND
- move RB forward or backStructured Modification
I can't seem to find any commands that insert or remove parens in pairs, or to move parens across expressions.