The STETtext editor may have been the first folding editor; its first version was written in 1977 by Mike Cowlishaw. The editor runs on the IBM VM/CMSoperating system. STET was written to explore an approach to text editing that followed the principles of Structured programming. It allows programs and documentation to be written 'top-down', with blocks of code or text kept to a limited size. This was "a first attempt to take the structure out of the domain of languages, and into the domain of editors. In addition to conventional editing facilities, STET gives the user a third dimension: a tree structure that may be traversed using Program Function Keys much as scrolling is normally implemented"
Principles
The editor, like many text editors, is a full-screen editor; a window into the file being edited is displayed and the lines displayed can be edited directly on-screen by insertions, deletions, or overtyping. Editing is also effected by pressing programmable action keys or by typing in commands. Commands are either 'top-line commands' or 'line commands'. Top-line commands generally apply to the entire file being edited, and include the usual operations such as saving, searching, replacing, movement around the file, and so on. Line commands apply to a single line or a number of lines, and allow copying, moving, overlaying, merging, uppercasing and the like. An innovation in STET is the ability to mark a group of lines using the < line command to mark the first and last lines of a group. The group of lines can then be manipulated as a whole; they can be copied, merged, etc., and also make possible the 'structured editing commands' which provide the folding capabilities of the editor.
The structured editing facilities of STET are based on the concept that each file is represented as a collection of named blocks of lines. A block is created from an marked group of lines by the command 'form commands'. This command creates the block with name 'COMMANDS' and replaces the group of lines with a single line with a reference to COMMANDS. This feature makes it easy to create a structured file from a flat file. The block reference concept is very similar to the idea of links in a Wikipedia file, and indeed in STET a block can also be created by putting a new reference on a line and then 'entering' that reference to edit the block. The structured editing commands also allow the user to see a map of the tree structure of the file, list the blocks alphabetically, and navigate the structure of the file. Navigation upwards and downwards or to a named block is possible, along with 'go to next block at this level'. Other commands allow blocks to be renamed, expanded, etc., and also allow a flat file to be built from all or part of the structured file.
Other
The editor is written in PL/Iexcept for the 3270 screen interface which is written in Assembler. STET was written and maintained by Mike Cowlishaw from 1976-1979 and then taken over by Steve Davies, who continued to enhance and maintain it through the 1980s. Many of the features in STET were used in later IBM text editors, including XEDIT and Lexx.
Limitations
All files that can be edited are limited to a maximum of 32,767 characters wide and each block is limited to a maximum of 32,767 lines. An unstructured 'flat file' is edited as a single block. A structured file is stored on disk in a special format which allows efficient loading and navigation of the blocks in the file. This allows each file to also store useful meta-information, but has the disadvantage that a flat file has to be 'built' from the structured file before it can be processed by a compiler or word-processing utility.