The STET text editor (the 'STructured Editing Tool') may have been the first folding editor; its first version was written in 1977 by Mike Cowlishaw. The editor runs on the IBM VM/CMS operating 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 (usually less than a page).
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"
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' (entered in a command entry area on the top line of the screen) or 'line commands' (entered in a 4-character command entry field adjacent to each displayed line of text).
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 (over 60 in all).
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 (anonymous) marked group of lines by the command (for example) '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 (identified by its first non-blank character being some special character, by default ')'). This feature makes it easy to create a structured file from a flat file.