From: utzoo!decvax!ucbvax!ARPAVAX:C70:editor-people Newsgroups: fa.editor-p Title: Extendable Editor. Article-I.D.: ucb.1900 Posted: Sat Sep 4 04:43:59 1982 Received: Sun Sep 12 01:53:40 1982 >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' -------