[fa.editor-p] Extendable Editor.

ARPAVAX:C70:editor-people (09/04/82)

>From JAY@USC-ECLC Sat Sep  4 03:21:33 1982
You may recall my typology of necessary commands in a minimal editor.  I
have added three things and moved one.

1) The ability to define/redefine commands.  Which means some sort of
   extension language including:

        ; Flow control
   1.1) WHILE .. DO ..
   1.2) IF .. THEN .. ELSE .. (The ELSE is of course optional)
   1.3) Other looping constructs? Perhaps a case type statement.
	; Data
   1.4) Variables: Local, and Global
     1.4.1) Various types, including some or all of the folowing
	; Primitive Types
     1.4.1.1)	Boolean, Integer, Character,
		String (and Buffer if its not a string),
		Mark (In the string or buffer), List, Atom,
		Procedures, Functions
	; Type Construction
     1.4.1.2)	Array, Record (Both of any primitive types)
		(For instance a Window could be a RECORD with fields
		 Top-Line,Bottom-Line : Integer; Upper-left-Char : Mark;
		 And a dispatch table - Array [0..127] of Procedure)
	; Primitive operations
   1.5) The ability to call other commands and editor primitives.
   1.6)	Input Output commands.
   1.7) Actions on all the variable types.
            AND, OR, NOT, Etc. for booleans;
	    Addition, Subtraction, Etc. for integers;
	    Concatination, Insertion, Deletion, Searching,
	    Creation, Selection, and Removal (Multiple buffer comands)
	     Etc. for Strings-Buffers;
	    Indexing into arrays;
	    Accessing fields of records

	; Programing aids.
   1.8) An interactive debugger? (it would be painful to use this language
        to develop a ~REAL~ editor without it)

2) Some means to connect commands to keys, and some way to disconnect them.
   (Perhaps Dispatch tables)

3) Due to the size limitations of most machines, a way to load libraies of
   functions and to "Unload" them (ie. get them out of core).  This may be
   done manualy or via some function like Make Space in Emacs (Teco version).

4) Display package? Should this be at a low level and thus fast, or should
   it be written in the extension language and thus easily modified? If the
   extension language is (or can be) compiled then perhaps both are posible.

5) Garbage collection.  Especialy if Lists are included as a data type.
   This may be where libraries are unloaded (if they haven't been used
   for quite a while)

6) Interrupts.  To allow users to escape endless loops and to abort
   re-display if they continue to type ahead (ie. C-V C-V C-V C-V M-> )


Any thing else?

j'
-------