Skip to content

LISPED (first structure editor in 1966) #14

@shaunlebron

Description

@shaunlebron

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions